Django的一些操作与视图函数
一 . Django的安装
pip install django==1.14.6 # 后面的数字是django的版本
二 . 通过命令行(cmd)来创建Django项目
1. 切换到保存项目的文件夹下 # cd 空格 文件夹名 2. django-admin startproject 项目名称 # 创建一个新项目 3. python manage.py runserver 127.0.0.1:8000 # 启动django项目, 后面的ip地址和端口 4. python manage.py startapp app名字 # 创建App, 可以创建多个
添加完App后,需要在settings文件里面的INSTALLED_APPS后面加上一句话.
如果有多个App 为了避免URL都写在一起看着太乱,需要把各个需要的urls.py文件写到自己的App文件下.
此时在主urls.py文件里面写内容就要有一些变化了.
from django.conf.urls import url,include
from django.contrib import admin
from App01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls,),
url(r'^login/', views.login, name='login'),
url(r'^App01/', include('App01.urls')), # 凡是以App01开头的请求,都去App01.urls里面找.
]
# 但是此时的搜索路径需要以App01开头了, 比如原来搜索127.0.0.1:8000/login就能找到login页面,
但是如果这个login的url在App01的文件里 就需要写成 127.0.0.1:8000/App01/login 这样才能找到login页面
URL的别名应用
# 上述操作是在HTML文件中进行的,a标签也是这样做的, 但是在视图(views)里面的渲染就不一样啦.
namespace的用法
crm里面url的写法
app01里面url的写法
crm视图函数
三 . 通过pycharm来创建django项目
打开pycharm-->File-->NewProject-->Django
四 . 传参方式
# login后面用括号括起来的是是参数,而且必须用括号括起来,
在视图里面的函数必须用一个形参来接收
五 . CBV与FBV
FBV(function base views) 在视图里面写函数就是FBV(常用的)
CBV(class base views) 在视图里面写类, 同时urls.py里面也和FBV不一样(基本用不到)
CBV 的本质也是FBV 先实例化,执行view方法,然后执行里面的dispatch方法,dispatch方法通过反射可以拿到get或者post然后去执行函数
# path拿到的是不带参数的路径, get_full_path拿到的是带参数的路径
request.path 拿到的路径是/index/
request.get_full_path() 拿到的路径是 /index/?page=1
# 写在视图里面的
class Myd(View): def get(self,request,*args, **kwargs):
print('get方法执行了')
return render(request,'cvpost.html',{'name':self.name}) def post(self,request,n):
print('post方法被执行了')
return HttpResponse('post')
# urls.py
from django.conf.urls import url
from myapp.views import MyView #引入我们在views.py里面创建的类 urlpatterns = [
url(r'^index/$', MyView.as_view()), # as_view()这个方法拿到的是view函数然后去u执行
]
# 传参
url(r'^cv/(\d{2})/', views.Myd.as_view(),name='cv'),
CBV加装饰器
我们在给类方法加装饰器的时候,他不同于函数直接写在上面就可以,我们要先将其转化为方法装饰器.
Django中提供了method_decorator装饰器用于函数装饰器转化为方法装饰器
from django.views import View
from django.utils.decorators import method_decorator class AddClass(View): @method_decorator(wrapper) #这个wrapper就是定义的装饰器
def get(self, request):
return render(request, "add_class.html") def post(self, request):
class_name = request.POST.get("class_name")
models.Classes.objects.create(name=class_name)
return redirect("/class_list/")
给CBV加装饰器的方法有三种
# 第一种方法
class AddClass(View): @method_decorator(wrapper)
def get(self, request):
return render(request, "add_class.html") # 直接写在方法上面
# 第二种方法,写在类上面,但是需要指定给谁加 name=谁
@method_decorator(wrapper, name='get')
class AddClass(View): def get(self, request):
return render(request, "add_class.html")
# 第三种方法, dispatch方法
from django.utils.decorators import method_decorator @method_decorator(wrapper)
def dispatch(self, request, *args, **kwargs):
return super().dispatch(request, *args, **kwargs) # 自己定义一个dispatch方法,这个方法是无论get还是post方法都被加上装饰器
六 . 浏览器的八种请求方式
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
七 . request后面的属性与方法
request.POST/GET/method/COOKIES/session/FILES/path/get_full_path/META/body
Django的一些操作与视图函数的更多相关文章
- 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...
- 三 Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性
Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...
- Python Django CBV下的通用视图函数
ListView TemplateView DetailView 之前的代码实例基本上都是基于FBV的模式来撰写的,好处么,当然就是简单粗暴..正如: def index(request): retu ...
- django url配置-反向解析-视图函数-HttpRequest对象-HttpResponse对象-cookies-session-redis缓存session
""" --视图概述:-- 作用:视图接受WEB请求,并响应WEB请求 本质:视图就是一个python中的函数 响应: 1.网页: 一.重定向 二.错误视图 400,50 ...
- django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转
app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象. 创建一个app:f ...
- Django路由配置系统,视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- Django路由配置系统、视图函数
一.路由配置系统(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个 ...
- 简单的django登录项目---带views视图函数(脚本文件)---用Bootstrap
简单的django登录项目 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdjango工程项目 ...
- Django中使用Bootstrap----带view.py视图函数(也就是项目下的脚本文件)
一.Django中使用Bootstrap 1.首先建立工程,建立工程请参照:https://www.cnblogs.com/effortsing/p/10394511.html 2.在Firstdja ...
随机推荐
- VS CODE 快捷键
批量注释 alt + shift +a 单行注释 ctrl +/ 批量文本替换 ctrl +f2 https://www.cnblogs.com/shine-lee/p/10234378.html
- [转]Oracle 清除incident和trace -- ADRCI用法
在oracle11g中,dump file的目录已经有所改变,bdump和udump整合到trace中,cdump独立出一个. E:\ora11g\app\Administrator\diag\rdb ...
- IndentationError 这个错误是缩进的问题
1.自定义库导入时,提示这个错误,是缩进的问题
- Beta阶段团队成员贡献分分配规则
Beta阶段团队成员贡献分分配规则 Alpha阶段贡献分分配有些负责,在这里进行一些修改: 对任务完成得分部分进行了简化 对发现bug的惩罚措施进行了修改 移除了优化得分,不鼓励修改他人代码 移除了帮 ...
- 【RSYSLOG】Log4x To Rsyslog Config
Log4x To Rsyslog Config Log4net配置 <!--RemoteSyslogAppender--> <appender name="remoteSy ...
- Python的socket模块与交互式指令
socket简介 在编程的过程中,我们需要使用网络编程,这时我们不得不和网络通信的底层基础打交道了.我们必须让自己传输的数据符合网络通信的基本协议,即TCP/IP协议,但是网络通信协议本身很复杂.我们 ...
- Python2和Python3中urllib库中urlencode的使用注意事项
前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...
- CRM系统(第二部分)
阅读目录 一.讲师与学生简介 二. 初始化 ,studyrecord, 三.初始化 course_record:批量生成学习记录 四. 考勤 url跳转 五.录入成绩 六.highcharts表 ...
- 【kindle笔记】之 《解忧杂货店》-2018-3-13
[kindle笔记]读书记录-总 <解忧杂货店>-2018-3-13 东野的大ID加上此书的大ID,今天终于在回来天津的火车上一口气读完了. 此前在微信读书上看过这本书,只看了前一部分,感 ...
- How to Configure Email Notification in Jenkins
How to Configure Email Notification in Jenkins? - The Official 360logica Bloghttps://www.360logica.c ...