美文网首页
97.Django model和后台的管理

97.Django model和后台的管理

作者: 羽天驿 | 来源:发表于2020-01-02 20:44 被阅读0次

一. ORM框架

ORM---可以完成对象到关系模型的双向的转换。可以简化操作,并且自动创建数据库。

二. 在model中创建数据库的类(数据)

1.定义模型类
2.继承父类---models.Model(继承了该父类可以对数据库完成自动的创建)
3.并在这里面再申名一个类


class Meta:
db_table="tb_subject"
(这个类就是告诉程序与我定义的这个模型相关的表格是是哪一张)


4.把模型自动生成表到数据库:

注意:必须先把你的应用的名字加到INSTALLED_APPS=[......"应用名字",]


(1).python manage.py makemigrations polls (生成迁移)
(2).python manage.py migrate (执行迁移)

注意:字段最好不要给null,这样会很麻烦,最好的做法是给默认值,默认值是空的字符串 default=" "


三.view将数据放入视图函数中。

1.拿到模型对象的数据:
(1)可以通过连接数据库通过游标对象select取到数据。
(2)面向对象拿数据:
objects----模型管理器
模型对象.objects.all()-----通过模型管理器的all方法----可以拿到模型中的所有的数据。
返回值命名为queryset 这是一个查询集的集合


模型对象.objects.get("字段")----拿出特定的字段的值


queryset=模型对象.objects.all()

(3)在通过Django的模板语法for 循环就可以将数据渲染到页面上。(view具体的渲染的方法参考96(上一章))


四.Django系统管理平台


1.创建超级管理员:
python manage.py createsuperuser


2.要在里面显示自己的模型需要注册自己的模型:
注册的方法:
找到应用下的admin.py进去:
admin.site.register( 模型类对模型后台修改管理的类)进行模型的注册。
注意:如果需要修改模型类在后台显示时的名字需要在模型的相关的类中Meta中写:
verbose_字段名="中文名字"---这个是单数的时候
verbose_字段名_plural="中文名字"---这个是复数的时候


3.对后台模型管理的类创建:
class 名字(admin,ModelAdmin
这个类必须继承ModelAdmin的这个类。
在ModelAdmin中有许多的方法,那么继承了它我们创建的这个类就是可以用的。


(1)list_disply=(属性1,属性2)---这个的意思就是在显示这个学科的时候需要显示那些与学科相关的属性。


(2)list_per_page=number--页面显示的最多的数据。


(3)search_fields=("字段",)
通过字段来搜索学科

注意:这个后面赋值的必须是元组。只有一个字段的时候后面加逗号。


(4)ordering=("字段名",)---按照什么进行排序。默认是升序的,字段名前面加减号就是降序。
注意:这个后面赋值的必须是元组。只有一个字段的时候后面加逗号。


(5)list_display_links=(字段,)-----这个就是点击字段出现学科的所有的信息
注意:这个后面赋值的必须是元组。只有一个字段的时候后面加逗号。


五.静态的资源

在项目下新建文件夹-在这下面分类建文件夹。
图片等在项目中创建文件夹然后到
setting里的----------
设置:
STATIC_URL="/STATIC/"

注意你这个地方是什么名字以后写路径的时候开头就是什么名字和你的文件夹叫什么名字是没有任何关系的。


在Django中加在静态资源需要在前面写:
{% load staticfiles %}


六.url参数

url参数.png

这个的意思就是请求teachers这个资源的时候 程序回去找 后面对应的这个值的数据。在通过view进行数据的渲染。

六.requset请求

1.get请求拿到数据
2.post给服务器发送数据


3.从request.GET("键")从这里面就可以拿到对应的键的值。

七.捕获异常

针对url的参数不存在或者错误的时候返回特定的页面,或者自定义其他的样式。


    try:
        sno = requset.GET["sno"]
        subject = Subject.objects.get(no=sno)
        # Subject.objects.filte(no=sno).first()
        queryset = Twacher.objects.filter(subject__no=sno)
        context = {
            "subject": subject,
            "teachers": queryset,
        }
        return render(requset, "teachers.html", context)
    except (KeyError, ValueError, Subject.DoesNotExist):
        return redirect("/")

redirect ---重定向函数。
return redirect("/") 这句话就是出错就返回网站的根目录。


相关文章

网友评论

      本文标题:97.Django model和后台的管理

      本文链接:https://www.haomeiwen.com/subject/hhtooctx.html