先在来研究一下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)
接下来我们测试数据的写入
这时我们的数据写入成功(只是暂时不支持输入中文)
接下来我们要使用HTML来调用Django
我们在templates里面创建edit文件夹,edit文件夹里面创建index.html文件
<form action="{% url 'edit:write' %}" method="post">是HTML里面的表单元素,下面我们将views里面加上一个session验证的方法
{% 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>
先确保在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值,然后我们根据外键关系添加上数据库内容,下面我们就来测试一下
我这边测试成功了,你呢,不懂的可以在下面留言或者给我发邮件liu1feng@hotmail.com,或者关于python的基础知识,让我们一起进步吧~
下一篇我们来加上图片的上传,以及登入之后界面的展示,和列出发布过的博客内容。