Django 路由设置和前端页面互相关联的方法

urls.py 文件

urls.py 用以管理URL请求路径 与 响应函数关联

from django.conf.urls import url # Django2.0 以前用 url 配置路由;2.0以后引入 from django.urls import path
# from django.contrib import admin # Django默认的输出内容
from BMS import views # 引入视图函数文件

# 配置路由
urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    # psth('admin/',admin.site.urls), # Django 2.0 以后用path定义路由纸箱函数
    url(r'^book_list/',views.book_list),
]

views.py 文件

views.py 用以定义 urls.py 关联的函数。

from django.shortcuts import HttpResponse,render,redirect
# HttpResponse 返回字符串HttpResponse('返回内容') 
# render 返回指定的文件 render(request,'返回文件路径',{'定义文件可以处理的数据(key:val)'}) 
# redirect 重定向到另一个页面。
from BMS import models # 引入数据库模型,这里是 models.py 而不是 Django 的 models 模块

# 定义页面的处理函数
def book_list(request):
    bookList = models.Book.objects.all()
    print(bookList)
    return render(request,'book_list.html',{'book_list':bookList})

html文件

对应 views.py 函数返回给浏览器的前端页面

<table border="1">
    <thead>
    <tr>
        <th>id</th>
        <th>书名</th>
        <th>出版社</th>
    </tr>
    </thead>
    <tbody>
    <!-- 这里处理了 render 给html文件的参数 --> 
    {% for  listItem in  book_list %}
        <tr>
            <td>{{ listItem.id }}</td>
            <td>{{ listItem.title }}</td>
            <td>{{ listItem.publisher.name }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>

models.py 文件 

models.py 用以建立数据库模型的文件

类 --> 表   属性 --> 字段 类实例对象 --> 表记录

from django.db import models # 这个 models 是Django建立数据库模型的
# 每个类必须继承 models.Model方法
# 出版社类
class Publisher(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=64,null=False,unique=True)

# 书类
class Book(models.Model):
    id = models.AutoField(primary_key=True)# 自增的ID主键
    title = models.CharField(max_length=64,null=False,unique=True)
    # 与出版社关联的字段 models.ForeignKey(to='关联外键的名称') 指定关联外键
    publisher = models.ForeignKey(to='Publisher')

字段常用参数

(1)null

如果为True,Django 将用NULL 来在数据库中存储空值。 默认值是 False.

(1)blank

如果为True,该字段允许不填。默认为False。要注意,这与 null 不同。null纯粹是数据库范畴的,而 blank 是数据验证范畴的。如果一个字段的blank=True,表单的验证将允许该字段是空值。如果字段的blank=False,该字段就是必填的。

(2)default

字段的默认值。可以是一个值或者可调用对象。如果可调用 ,每有新对象被创建它都会被调用。

(3)primary_key

如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段的primary_key=True,Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键行为,否则没必要设置任何一个字段的primary_key=True

(4)unique

如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的

(5)choices

由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。

YOU_NAME = (
 ('KK', 'Keke'),
 ('NA', 'NANS'),
 ('MM', 'MiMi'),
)

每个元组中的第一个元素,是存储在数据库中的值;第二个元素是在管理界面或 ModelChoiceField 中用作显示的内容。 在一个给定的 model 类的实例中,想得到某个 choices 字段的显示值,就调用 get_FOO_display 方法(这里的 FOO 就是 choices 字段的名称 )。

运行命令创建数据库表

Django 不能创建数据库,所以只能自己手动到 mysql 创建数据库,当然也可以通过 python 模块运行命令创建数据库。

python manage.py makemigrations  [APP名称] # 将 models.py 中的模型记录在一个文件中,并将其存放在 migrations 文件夹下

python manage.py migrate # 将 刚刚记录的语句写入数据库

猜你喜欢

转载自blog.csdn.net/u011146423/article/details/82558397
今日推荐