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

先在来研究一下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">
      {% 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的基础知识,让我们一起进步吧~

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

原文链接:加载失败,请重新获取