07-Django视图进阶
1、调试模式
Django项目下的settings.py 默认是DEBUG=True,开发的时候一般要开启调试模式,当项目完成发布必须要改成False,否则会暴露网站的配置信息,修改以下两行:
# DEBUG=True
# ALLOWED_HOST=[] # 表示允许哪些ip地址访问 DEBUG=True
ALLOWED_HOST=['*'] # 表示允许所有网站访问
如:404 则会显示 Not Found
2、错误视图
1)关闭调式模式后,默认会显示一个标准的错误页面,如果要显示自定义的页面,只需要在templates下自定义一个404.html ,不需要进行url的配置,Django会自动匹配
出现的原因一般是地址没有配置或配置出错
2) 500 服务端错误,一般为视图里代码出错
标准的显示页面未 Server Error(500),也可以自定义500页面,在templates下创建一个500.html
3、捕获url参数
进行url匹配时,把所需要捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后的相应组的内容作为参数传递给视图函数.
1)位置参数:参数名可以随意指定
url(r'^delete(\d+)$',views.delete) # 位置参数 def delete(request,bid):
return HttpResponse(bid)
2)关键字参数:在位置参数的基础上 给正则表达式组命名即可
?P<组名>
关键字参数,视图中参数名称必须和正则表达式组名一致
url(r'^delete(?P<num>\d+)$',views.delete) # 关键字参数 def delete(request,num): # 视图中参数名称必须和正则表达式组名一致 都是num
return HttpResponse(num)
4、登录案例
def delete(request,num):
return HttpResponse(num)
参数中request就是HttpRequest类型对象,request包含浏览器请求的信息
思路:
1、需要一个登陆页面 login.html
2、需要一个登陆后页面,如index.html
3、在views.py中 定义二个视图函数,一个是登录页面,一个是获取登录信息并做校验
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<--
form表单必须有的参数:
method:post或者get,post安全
action 必须要有规定当提交表单时,向何处发送表单数据
-->
<form method="post" action="/login_check">
用户名:<input type="text" name="username"/><br/>
密码: <input type="password" name="password"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
def my_render(request,template_path,context_dict): temp = loader.get_template(template_path)
# context=RequestContext(request,context_dict)
context=context_dict
res_html=temp.render(context)
return HttpResponse(res_html)
def login(request):
return my_render(request,'booktest/login.html',{})
def login_check(request):
"""
request.POST 保存的是post提交的参数
request.GET 保存的是get提交的参数
""" # 1. 获取提交的用户名和密码
# print(type(request.POST)) # 类型QueryDict类型对象,跟字典相似
username = request·POST.get('username')
password = request·POST.get('password') # 2. 进行登录校验并响应应答,实际情况用户名和密码是保存在数据库里的
if username=='admin' and password =='123456' :
# 用户名和密码正确,跳转到首页
return HttpResponseRedirect('/index') else:
# 用户名和密码错误,跳转登录页面
return HttpResponseRedirect('/login')
07-Django视图进阶的更多相关文章
- Django 2.0 学习(07):Django 视图(进阶-续)
接Django 2.0 学习(06):Django 视图(进阶),我们将聚焦在使用简单的表单进行处理和精简代码. 编写简单表单 我们将用下面的代码,来替换之前的detail模板("polls ...
- Django 2.0 学习(06):Django 视图(进阶)
概述 Django中的特方法,该方法代表了Django的Web页面,并且视图具有特定的模板.以博客应用为例进行说明,在博客应用中应该包含下面的视图: 博客主页:显示最近的一些记录: 详细页面:单个详细 ...
- 1.2、Django 视图与网址__进阶
Django 视图与网址进阶 1.1.简单使用: 把我们新定义的app加到settings.py中的INSTALL_APPS中 修改 HelloDjango/HelloDjango/settings. ...
- 07: Django 使用ldap登录、注销等
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十七篇】:Django【进阶篇】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- [diango]理解django视图工作原理
前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...
- Python之路,Day15 - Django适当进阶篇
Python之路,Day15 - Django适当进阶篇 本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣 ...
- Django 2.0 学习(03):Django视图和URL(下)
接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...
随机推荐
- 分布式算法-一致性HASH
分布式算法 参考: https://blog.51cto.com/alanwu/1431397 https://blog.csdn.net/kojhliang/article/details/8120 ...
- 笔记||Python3之对象与变量
什么是对象?什么是变量? 在python中,一切都是对象,一切都是对象的引用. 变量相当于数学中的等式,比如xy = 20 .在编程中变量还可以是任意数据类型. 对象是分配的一块内存,有足够的空间去表 ...
- 【ES】338- ECMAScirpt 2019 新特性汇总
点击上方"前端自习课"关注,学习起来~ 最近在做的一个活动,大家都可以参与: 送 1600 元超大现金红包啦,走过路过不要错过哦 ~ 最近 ECMAScript2019,最新提案完 ...
- 【Zuul】使用学习
[Zuul]使用学习 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <arti ...
- 【IntelliJ Idea】使用学习
[IntelliJ Idea]使用学习 转载:https://www.cnblogs.com/yangchongxing/p/10658259.html 目录 ==================== ...
- Runtime - 关联对象使用方法及注意点
大家都知道在分类里,可以间接的添加属性,运用runtime关联对象. 如下图,只是声明了btnClickedCount的set, get方法而已 并没有生成_btnClickedCount 成员变量, ...
- JVM 学习笔记二 :JVM内存区域
一.内存分配概述
- 6、UnityConfig实现AOP
需求:我们需要给已经开发好的服务如这里的UserService,添加额外的执行逻辑,但是又不想破坏原有的服务,如:我们需要给UserService添加监控逻辑,监控的目的是看UserService服务 ...
- 内网渗透教程大纲v1.0
内网渗透 ☉MS14-068(CVE-2014-6324)域控提权利用及原理解析 ☉域控权限提升PTH攻击 未完待续...
- 带你了解Android Jetpack
1.Jetpack主要特性有以下三点: 1.加速开发组件可单独使用,也可以协同工作,当使用kotlin语言特性时,可以提高效率. 2.消除样板代码Android Jetpack可管理繁琐的Activi ...