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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

python django学习笔记八

go语言学习笔记

go 接口学习笔记

学习笔记Golang语法学习笔记

go语言学习笔记

Go 语言学习总结—— Go 学习笔记总结