2020/02/27 01-后台管理和路由

**django是比较传统的,mvc框架出来很多年了,是这个框架的改版,属于大的mvc框架中的一种,把开发中用到的大多数东西都设计进去了,所谓的模版,就是在html混写了很多服务器代码,在你写的函数中调用这个模版,把里面该替换的内容替换掉,这个模版就变成你要返回的html了,让html作为这个正文内容返回给server,由server包装成http的响应回去,所谓的模版就是一句话可以搞定的。
**
这里的后台管理是管理一些django的东西,不是网页后台管理。
提供orm可以让你不使用sqlalchemy
插件比较多

在这里插入图片描述
1.11应该是长期支持,1里面最后版本了
在这里插入图片描述
在项目构造初期只能用django-admin,只是在项目第一次构建的时候使用,后面都用manage.py了
在这里插入图片描述在这里插入图片描述
脚手架搭好会有manage.py
在这里插入图片描述
创建迁移文件,创建表里就修改,没创建就创建,创建一个model类来做迁移,传统的也可以在数据库把表创建好。model类建造好后就会makemigrations把迁移做好最后migrate,这样就可以把迁移的事情全部做好
在这里插入图片描述
manage.py是来命令行管理的
在这里插入图片描述
urls需要不停的动,只要建立一个view,这里就需要建立路由映射
在这里插入图片描述
部署就需要wsgi
在这里插入图片描述
数据库要先进行配置
在这里插入图片描述
官方建议用mysqlclient
在这里插入图片描述
编译有问题就直接下载安装包安装。
在这里插入图片描述
应用才是以后经常要做的事情,只要是server后面就是应用,其实django也是应用,只不过django认为自己是框架,当wsgi调用我的时候,其实不提供任何应用的东西,只是按照要求,把请求转给你写的程序,所以才认为你写的才是应用。在内部需要做路由才能找到应用,找到应用再把功能提供出来。
应用也就是功能,

在这里插入图片描述
最关注的是model和view,model和数据库打交道,view就是如何处理用户请求,每一个应用都有自己的views.py,views就需要我们写的函数,如何找到我们写的函数,就需要通过路由文件urls.py

在这里插入图片描述
应用如何管理,可以加到配置文件里去,加到INSTALLED_APPS,可以进行后台的管理也可以进行迁移
在这里插入图片描述
建表的时候一般字段不会太复杂

在这里插入图片描述
常用的就是主键,唯一性
在这里插入图片描述

在这里插入图片描述
特殊的地方就是表名,要借助meta类
在这里插入图片描述
不给表名会出现这样一个名字,会生成一个名字应用名+modelname
在这里插入图片描述
在这里插入图片描述
迁移很简单直接makmigrations
在这里插入图片描述
以后每次迁移相当于在修改表
在这里插入图片描述在这里插入图片描述
这个后台只不过是管理后台的表的,当然以后的用户管理也可以交给他
在这里插入图片描述
打开manage.py

在这里插入图片描述
这里有一个创建超级用户,就是管理员

在这里插入图片描述
用户名admin,密码admin

在这里插入图片描述
在数据库里能看到就成功了,在auth_user里
在这里插入图片描述
后使用后台管理前先要run server,不然没有网页可以用
先把当前时区改一下
在这里插入图片描述
zh -hanse使用中文,use-tz是否使用时区
在这里插入图片描述
如果牵扯到国际化的问题,如果是商业的还需要跟当地银行时间对接
在这里插入图片描述
保存一下,现在做完了国际化工作,就可以开始启动工作了
在这里插入图片描述
在这里插入图片描述
授权和修改密码
在这里插入图片描述
迁移
在这里插入图片描述
runserver启动
在这里插入图片描述
启动服务,你的修改,不用重启服务,他自己会热加载
在这里插入图片描述
这样diango写的第一个网站就成 了

在这里插入图片描述
admin进行django管理
在这里插入图片描述
在这里插入图片描述
这个服务是runserver启动的一个服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们在settigs把installed_apps把user加进去了
在这里插入图片描述
在这里插入图片描述
虽然加进来了,但是还需要做一些准备,models是跟数据库打交道的,tests测试的,views是后面要写的,请求来了如何response的,做视图的就是给人看
在这里插入图片描述
请你把什么加进来,加一个model和一个可迭代对象
在这里插入图片描述
models里现在有这个在这里插入图片描述
user是一个model,导入进去
在这里插入图片描述
保存一下底下,马上刷新了
在这里插入图片描述
现在刷新就有了
在这里插入图片描述
这是admin的site下的注册管理,后台站点管理

在这里插入图片描述
user表里现在一条都没有,增加一个user,所谓的后台管理就是变成了一个界面的增删改查
在这里插入图片描述在这里插入图片描述
这个用户跟我们自己建立的user表相关
在这里插入图片描述
users是所有用户的列表
在这里插入图片描述
国际化如果不改,这些进来都是英文的
在这里插入图片描述
这里其实就是变成中国区了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要在admin里注册model,各自的应用应该把各自的model放进来,在应用内部把相关的所有的表的管理应该加进来,因为对于相关的应用对于的表都在自己应用下的model。py里
在这里插入图片描述在这里插入图片描述
路由,就是指url到你的处理函数之间的映射问题
在这里插入图片描述
用户在使用一个网站的时候,对用户来说只能写一个url,url到端口之前的不管,端口后面的全管,到达端口建立连接以后,就要告诉访问某个资源,也就是path,path有了之后才能定位到资源
在这里插入图片描述
但是现在是动态网站,有db,webserver,用户通过url告诉webserver通过这个path路径找到资源,但是这个资源并没有真实存在,这个资源其实是数据库里数据,没有html,是想办法让用户觉得提供了html,让程序拼一个。静态网页一般是静态文件,动态一般是动态网页技术生成的

html,css,js,图片,最常见的静态文件,动态网页是通过url访问服务器并不能真正找到这个文件,需要从数据库替你将需要的数据取回来,然后组织在动态生成的html当中,然后将动态生成的内容返回给客户端
在这里插入图片描述
实际上是在做url path到函数的映射,函数如果需要找数据库就找数据库,动态生成html返回给客户端。
从url到function叫映射

在这里插入图片描述
路由时路径选择的问题,url的路径选择问题,一个url映射到一个function上去,route路由指的是如果现在有n个url如何让他走,这就是路由的概念,url1找function1,url2找function2,这就是路由,将不同的url和函数映射管理起来就是路由。
跟路由器一样,路由器里有路由表,这里的也是路由表。记录的是URL和他们的处理函数之间的关系。本质上所有的动态网页技术都做了这个事情

在这里插入图片描述
路由实现了不同的url到处理函数之间的映射,url不能写的太死板,所以有了正则表达式有模式匹配在这里插入图片描述
view就是视图处理函数

在这里插入图片描述
先看前两项,后面先不管,就是一个kv对,如果是true映射到这个v上去
在这里插入图片描述
在settings上有一个比较重要。,root urlconf,也就是告诉你所有url的配置,也就是路由的配置由它开始,
在blog包下面有一个urls模块

在这里插入图片描述** 在blog包下面有一个urls模块**
在这里插入图片描述
这里已经建立了一条
在这里插入图片描述
地址admin
在这里插入图片描述
这个正则表达式的意思就是以admin开头的地址/,转给admin.site.urls在这里插入图片描述
admin是别人写好的,admin模块下面有site应用,应用下有urls

在这里插入图片描述
可以写模块名和函数名
在这里插入图片描述
现在开始写自己的url映射,可以看一下打印是什么,还没调用,对和错没法知道
在这里插入图片描述

现在出了一些问题在这里插入图片描述
string类型没有get方法
在这里插入图片描述
需要这么写,需要处理http请求就是django.http,保存重新加载了
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
这一块现在填的是缺省的
在这里插入图片描述
200系列都是对的
在这里插入图片描述
在这里插入图片描述
现在这里就是返回的内容
在这里插入图片描述
前面有请求来了先到runserver,这个server将http请求拿来后,要把里面的请求内容封装,封装之后交给django框架,要把这个封装成request对象,到时候写成request.xxx就ok了
在这里插入图片描述
最后将内容组织好用bytes就给一个response正文部分,按照wsgi,会把状态码和头先给start_response,最后将正文拼一块发送出去(背后做的事情一样没少,只不过框架屏蔽了)
在这里插入图片描述
找这个函数就是映射,下面配置的就是路由表,一个请求找到处理函数之后要响应调用response,找个response返回wsgiserver,由server再返回到浏览器端。在这里插入图片描述
所以框架省略了很多操作,只要配置个数据库,数据库如果表有的话,model可以不做,迁移也可以不做,说实话直接runserver也可以跑起来。不连数据库会有一个sqllite,它将系统表注入到本地的sqllite中
在这里插入图片描述
不写下面就不会去连接mysql,就会把这个数据生成,把系统表塞入到里面,所以一般先把数据库链接配置好,配置好后会创建一个应用,为了马上看到应用,会先写model,这时候再runserver看一下,如果数据库链接失败,runserver一定失败
在这里插入图片描述
首页先测试下,然后再考虑写业务,不然整个配置都是错的
在这里插入图片描述
在这里插入图片描述
正则表达式只要包含index即可,输入aindex都是201
在这里插入图片描述
在这里插入图片描述
现在访问是404在这里插入图片描述
在这里插入图片描述
试试index1能否访问
在这里插入图片描述
斜杠,路径分隔符就出来了在这里插入图片描述
index1就错了
在这里插入图片描述
这样就卡死了,写其他的都不行
在这里插入图片描述
url1映射到了i函数,url2也映射到了i函数,两个不同的url指向同一个函数是可以的
在这里插入图片描述
就可以把后面去掉了
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
看一下request有哪些东西可以使用,不加注解,敲request什么都看不到
在这里插入图片描述
不加注解就看不到这些

在这里插入图片描述
GET方法,path
在这里插入图片描述
在这里插入图片描述
发起一个请求
在这里插入图片描述
在这里插入图片描述
输入成这样请求
在这里插入图片描述
这个就是字典,查询字符串就拿到了在这里插入图片描述
看看dict有什么
在这里插入图片描述
请求方法,请求路径,查询方法都在
在这里插入图片描述
查询字符串不能使用,因为里面还有&符号=号,还需要想办法直接断开,比如这种还是比较难解析的
在这里插入图片描述
表单数据是可以把带名字的控件传过来,没有name不传,id是给js用的,数据一旦提交,http封装了往服务器发,只认表单控件里带name的控件
在这里插入图片描述
什么时候出现这种情况,interest 起的名字一模一样,还有男女gender,interest有很多个兴趣,多选框名字都一样。传数据的时候是interest=music & interest=movie这么传的
在这里插入图片描述
在这里插入图片描述
**只不过post方法提交的时候,这些看起来像查询字符串的,谁等于谁and谁等于谁是放在body,post的信息是通过request body部分传过来的,而查询字符串是放在head中的第一行的 **

get方法往往 会有多值的现象,post的提交的时候会有多值现象,表单同名的会出现这样,name相同就会出现重复值(不同字典搞不定,所以创建出特殊的东西),没有name无法提交
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值