django学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django学习笔记相关的知识,希望对你有一定的参考价值。
基于django框架做一个网站关键要做好:
1.模型
django的数据库表统统抽象成类,字段抽象为类属性。首先创建项目,后创建应用,在应用的models中定义模型。之后注册模型,然后写入数据库。
模型的查询和修改操作
2.视图函数
视图就像传统web开发的cgi函数,每一个视图函数都接受一个request对象默认参数,保存http请求的全部信息。之后处理信息,与模型即数据库进行交互。最后利用django.http模块的http处理函数或是render函数调用模板文件生成html页面。
3.模板
模板就是在一个普通的html页面中插入django特有的模板语法,可以实现动态传入参数,动态生成页面。
4.url映射
两部分:项目的url映射,映射到应用。应用的url映射,到具体的视图函数。
简单实例:
创建投票网站
1.首先构建模型。模型有两个,问题模型,选项模型。关系为1对多。
1对多关系的构建通过在创建选项模型时加入question = models.ForeignKey(Question)外键构建。在初始化时给出question字段的具体对象就可构建关系。由choice找Question通过choice.question。由Question找choice通过question.contact_set返回一个对象列表。
数据库操作相关方法:
查询:通过Question.objects.all()查询Question表的全部记录
Question.objects.filter/exclude查询符合或是不符合条件的记录。
Question.objects.get()查询单条记录。
Question.objects.order_by()按顺序查询。
通过新建实例创建新的记录。通过.save()函数保存进数据库。
.id查看主键值。通过.delete()删除记录。
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_data = models.DateTimeField(‘data published‘)
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_data >= timezone.now() - datetime.timedelta(days = 1)
was_published_recently.admin_order_field = ‘pub_data‘
was_published_recently.boolean = True
was_published_recently.short_description = ‘Published recently?‘
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default = 0)
def __str__(self):
return self.choice_text
2.视图函数
视图函数即充当CGI函数的功能。通过URL映射将url映射到视图函数。通过传入的request对象request.POST[‘x‘]POST字典存储post表单的参数。在post表单中加入{%csrf_token%}表单加入csrf防御机制,加入token。定义三个视图函数。处理数据,并产生响应的html页面。相应的设计三个模板。通过render函数生成页面。index函数查询Question数据库的全部记录,然后放入字典中传递给render函数。
detail函数用于处理具体投票页面产生。vote函数用于操作具体投票。首先得到相应的问题记录,通过问题找到与之关联的选项。将其票数的属性votes加1,写入数据库中。result函数产生投票成功页面。
分为两种,一种用于从数据库中找到具体的数据并根据数据产生页面。一种用于处理数据并修改数据库。
3.模板
模板{{ }}用于替换变量。变量是通过render的字典变量传入。{%url ‘polls:name ’question.id%}替换响应的url。{%for%}{%endfor%}{%if%}{%else%}{%endif%}实现逻辑操作。
4.url映射
url(r‘^(?P<question_id>\d+)/result/$‘, views.result, name=‘result‘)
此url将/34/result/映射为result函数。34当作参数question_id传给result函数。
get参数通过此种方法传入。post参数通过request.POST。
以上是关于django学习笔记的主要内容,如果未能解决你的问题,请参考以下文章