主要内容:Django基础进阶之:Django 流程、Django URL、Django Views、Django Models、Django Template、Django Admin
Django 流程(图片来自大王):
Django URL
url捕获到的参数总是字符串!!!
总的urls.py文件:
通过include导入二级(app级)的urls.py处理url
app01下的urls.py文件:
Django Views
views主要进行逻辑处理,返回情形常见的有三种:
1. HttpResponse
最简单的HttpResponse:
HttpResponse只能返回字符串格式,必要时使用JSON进行转换。
2. render
render返回的是一个html文件。
可以使用模板,可以传入值对模板进行渲染。Django自带的模板渲染引擎比jinja2更强,在settings中可以设置使用什么模板引擎渲染。
3. redirect
redirect返回的是一个跳转链接。
Django Models
django 本身提供了非常强大易使用的ORM组件,并且支持多种数据库,如sqllite,mysql,progressSql,Oracle等。
在settings.py里面配置数据库引擎(以最常用的mysql为例):
因为mysqldb模块暂时还不支持Python3,所以先使用pymysql模块代替。
装好pymysql模块之后,需要在settings.py中设置一下:
创建自己的models:
Python3中使用__str__()代替__unicode__(),返回字符串格式的对象,方便我们区分打印出来models对象。
verbose_name_plural:用于设置models在admin中显示的内容,如果写成verbose_name,则在Django admin就会在显示的表名后面自动加上s(英文中的复数的意思)。
from django.db import models # Create your models here. class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=30) city = models.CharField(max_length=60) state_province = models.CharField(max_length=30) country = models.CharField(max_length=50) website = models.URLField() def __str__(self): return self.name class Meta: verbose_name_plural = "出版社" class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email = models.EmailField() def __str__(self): return "{} {}".format(self.first_name, self.last_name) class Meta: verbose_name_plural = "作者" class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_Date = models.DateField() def __str__(self): return "《{}》".format(self.title) class Meta: verbose_name_plural = "书名"
接下来就是在数据库中创建表:
在Terminal下使用以下命令:
1. python manage.py makemigrations
2. python manage.py migrate