Django框架主要内容项目创建与运行配置文件路由配置(View)请求与响应对象(View)类视图(View)中间件数据库(Model)模板(Template)admin站点管理学了这么多python知识,如果你连django都不会,就有点说不过去了。想要的朋友直接去我的博客获取:djangonotesMD文档超丰富目录notes总目录为:项目搭建大师虚拟环境使用大师Django项目与应用创建大师Django项目操作大师Django视图与模板Preliminary使用虚拟环境安装创建虚拟环境mkvirtualenvdjango_py3-ppython3注意:需要联网查看所有虚拟环境deactivate#退出虚拟环境#pippipinstall#安装依赖包pipuninstall#卸载依赖包piplist#查看安装依赖包django(1.11.11)pipfreeze#查看安装依赖包django==1.11.11Django项目及应用创建1.项目组织结构一个项目包含多个Apps一个App是一个Python包,代表一个功能模块,如:用户模块、商品模块等功能模块可以保持rel主动独立将代码以包的形式组织起来,方便功能模块的复用二、创建项目的两种方式通过pycharm创建通过命令行创建1、通过pycharm创建项目项目创建完成后结构为如下:通过命令创建创建项目:django-adminstartprojectproject创建Django项目,首先进入虚拟环境:workon虚拟环境名称使用如下命令创建Django项目:django-adminstartproject项目名称#示例:要创建的项目名为Django02django-adminstartprojectDjango02创建一个应用,首先进入项目根目录:cd项目根目录,执行以下命令创建应用#manage.py自动为管理文件上面创建项目时生成的pythonmanage.pystartapp应用名#例子:pythonmanage.pystartappusersrequestobject1.client传参的几个方法都是通过URL路径(path)传递的,例如:http://127.0.0.1:8000/news/1/2,两个参数:新闻类别id和页码 传递给querystring查询字符串例如:http://127.0.0.1:8000/news?ca...关于URL格式:schema://host:port?query-stringpassedbody传输请求体,可分为:键值对:category=1&page=2表单数据:非表单数据(json,xml){"category":1,"page":2}12通过http协议请求头(header)传输2.HttpRequest对象1.Django请求和响应过程:2.常用属性请求对象:AttributeDescriptionpath请求页面的完整路径,不包括域名和端口参数。例如:/users/indexmethod是一个全大写的字符串,表示请求中使用的HTTP方法。常用值:GET、POST、DELETE、PUT等。以下三种是GET请求:默认提交form(或者方法指定为get),在浏览器中输入地址直接请求网页中的超链接(一个标签)。用户登录:AbstractUser对象;未登录:AnonymousUser对象;判断是否已经登录:request.user.is_authenticated(),返回true表示登录GET是一个类似字典的QueryDict对象,包含了一次GET请求的所有参数。parameter)body获取原始请求体数据,获取的数据为bytes类型METApython字典类型,将数据封装在请求的headers中-REMOTE_ADDR-客户端的IP地址-REQUEST_METHOD-字符串,如"GET"或"POST-CONTENT_TYPE-请求文本的MIME类型。注意:对于用户在请求头中添加的键值,Django会在键前加上HTTP_并转换为大写,然后将键值保存在request.META.官方文档参考了COOKIES一个标准的python字典,包含了所有的cookies,keys和values都是类似字典的对象,可以通过字符串session读写:django.contrib.sessions.backends.db.SessionStore。Django提供了session模块,默认会开启保存session数据类视图1.类视图发帖功能#url配置urlpatterns=[url(r'^post$',views.post),#显示发帖界面url(r'^do_post$',views.do_post),#执行post操作]#查看defpost(request):"""getrequest:displaypostinginterface"""returnrender(request,'post.html')defdo_post(request):"""post请求:执行post操作"""title=request.POST.get('title')content=request.POST.get('content')returnHttpResponse('post:title=%s,content=%s'%(title,content))通过一个URL同时实现view和view的GET和POST请求登录功能(注:可能有PUTDELETE等);#url配置urlpatterns=[url(r'^post$',views.post),#postingfunction]#viewdefpost(request):"""postingfunction"""ifrequest.method=='GET':#获取请求:显示发布界面returnrender(request,'post.html')else:#发布请求:执行发布操作title=request.POST.get('title')content=request.POST.get('content')returnHttpResponse('帖子:标题=%s,content=%s'%(title,content))一个类视图实现了一个函数定义的视图,称为函数视图。在Django中,也可以通过类来定义视图,称为类视图。类视图的使用定义一个继承Django提供的View类的类fromdjango.views.genericimportViewclassPostView(View):defget(self,request):"""getrequest:displaypostinterface"""returnrender(request,'post2.html')defpost(self,request):"""postrequest:executepostingoperation"""#codebriefreturnHttpResponse('executepostingoperation')调用类视图的as_view()配置url的方法urlpatterns=[...#classviewregistrationurl(r'^post2$',views.PostView.as_view()),]classview优点:函数视图代码的可读性和复用性更好,注释太多,喜欢的朋友,直接去拿吧: