Django学习笔记之博客开发(二)

时间:2021-07-27 03:26:10

先在来研究一下Django博客中的博客编辑页面。

就如同csdn这样的编辑框吧,包括文章分类,图片上传,博客内容编辑这样简单的内容。

首先我们需要的还是最基本的东西:创建app。

在models里面添加需要的数据表edit以及字段:

sort:文章的标签

title:文章标题

content:文章内容

time:发布日期

我们将edit数据表设置Reg为外键

from django.db import models
from register.models import Reg

class Edit(models.Model):
edit=models.ForeignKey(Reg)
title=models.CharField(max_length=100)
sort=models.CharField(max_length=50)
content=models.CharField(max_length=9999)
time=models.DateTimeField('Pub_Time')
def __unicode__(self):
return self.title

然后修改register里面的admin文件

from django.contrib import admin
from register.models import Reg
from edit.models import Edit


class EditInline(admin.StackedInline):
model=Edit
extra=0
class RegisterAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['account']}),
(None, {'fields': ['password']}),
('Date information', {'fields': ['time']}),

]
inlines=[EditInline]
list_display = ('account','password','time')
list_filter = ['time']
search_fields = ['account']
date_hierarchy = 'time'
admin.site.register(Reg, RegisterAdmin)

接下来我们测试数据的写入

Django学习笔记之博客开发(二)

这时我们的数据写入成功(只是暂时不支持输入中文)

接下来我们要使用HTML来调用Django

我们在templates里面创建edit文件夹,edit文件夹里面创建index.html文件

Django学习笔记之博客开发(二)


 

 <form action="{% url 'edit:write' %}" method="post">
{% csrf_token %}
<label> 标题: </label>
<input name="title" type="text" />
<label> 内容: </label>
<textarea name="content"></textarea>
<label> 标签: </label>
<input name="sort" type="text" />
<br>
<input type="submit" value="提交" class="btn btn-warning" />
</form>
是HTML里面的表单元素,下面我们将views里面加上一个session验证的方法

先确保在settings里面开启了session

settings.py中 确保 'django.contrib.sessions.middleware.SessionMiddleware'存在,如果没有则添加。
编辑settings.py中INSTALLED_APPS 配置,确保'django.contrib.sessions' (如果你是刚打开这个应用,别忘了运行 manage.py syncdb )

接下来在register的views的login函数里面加入这一行

request.session['account']=account
这样我们就已经开启了一个{account:'Tron'}这样类似的session,我们的博客确保是在登入的情况下才能发不,因为我们的register表与edit表存在着外键的关系

在edit的views里面也加上这样的代码,来判断是否存在我们需要的session

def write(request):
title=request.POST['title']
content=request.POST['content']
sort=request.POST['sort']
if 'account' in request.session:
p=Reg.objects.get(account=request.session['account']).act
pk=Reg.objects.get(pk=p)
pk.edit_set.create(title=title,content=content,sort=sort,time=timezone.now())
pk.save()

return render(request,'edit/index.html',{'result':'成功!'})
else:

return render(request,'edit/index.html',{'result':'请先登入'})

p=Reg.objects.get(account=request.session['account']).act
这一行中的act是我自己添加上的一个函数,用来返回id值,然后我们根据外键关系添加上数据库内容,下面我们就来测试一下

Django学习笔记之博客开发(二)

我这边测试成功了,你呢,不懂的可以在下面留言或者给我发邮件liu1feng@hotmail.com,或者关于python的基础知识,让我们一起进步吧~

下一篇我们来加上图片的上传,以及登入之后界面的展示,和列出发布过的博客内容。