先在来研究一下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
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"> {% 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值,然后我们根据外键关系添加上数据库内容,下面我们就来测试一下
我这边测试成功了,你呢,不懂的可以在下面留言或者给我发邮件[email protected],或者关于python的基础知识,让我们一起进步吧~
下一篇我们来加上图片的上传,以及登入之后界面的展示,和列出发布过的博客内容。