一 URL补充

二 Views试图函数

一 URL补充

1 MTV模型

2  django建立流程(用命令版)

(1)django-admin startproject projectname

(2)python manage.py startapp appname

(3)python manage.py runserver IP PORT

3 url配置(urls.py)

功能:建立起URL与视图函数的映射关系。

url:http://127.0.0.1:8080/blog/articles/2003/05?a=1&b=2

url(正则表达式(规则),视图函数)      匹配字符串:用户输入的url对应的路径:“/blog/articles/2003/05”

 注意点:
       (1) 出现覆盖现象的情况,匹配第一个url
       (2) 无名分组   url(r'^articles/(\d{4})/(\d{2})$', views.year_month),  # year(requset,1990,12)   按位置传参数
       (3) 有名分组   url(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})$', views.year_month),  # year     (requset,year=1990,month=12)   按位置传参数
       (4) url(r'^blog/', include('blog.urls'))分发

取值:request.POST.get("user")

获取form表单提交的方法:request.method=="POST"
  有return 就不往下走  可以去掉else

模板语法两种{{}}

渲染了后再往前端发   render 函数   render函数可以检测模板语法

点击提交  走url  走views  走render函数接着渲染模板(看有无别名)    发往前端

二 视图函数

    一定包含两个对象

   request------->,请求信息
    HttpResponse------->响应内容
    render 一个HttpResponse函数也存在render函数里
    get  请求的数据放在路径后面
 
     重点 request 里面的哪些信息:
     request.GET:GET请求的数据()
     request.POST:POST请求的数据()
     request.method:请求数据的方式()主要get或者post
     request.path:请求路径()与数据无关 
      根目录 :/(判断根目录

request.get_full_path()拿到路径后面所有的数据(包括路径)
      取一个键下的多个值:request.POST.getlist("hobby")

render 函数  render(request, template_name[, context]) 第三个参数是上下文对象
      redirect 函数 
 
      对比 render与redirect 的区别:
     redirect:发送第二次请求,url更新啦
      render:  直接返回一个页面内容但是url没有变化(未发送第二次请求)(涉及页面跳转时不用)

一个小例子:注:跳转是前后都要加/ ,返回时不用加/  图片用到了分发  例子里没有用到分发

---Model

from django.db import models

# Create your models here.
import pymysql
conn = pymysql.connect(host='', port=3306, user='root', passwd='', db='day66')
cur = conn.cursor()
cur.executemany("insert into userinfo values(%s,%s)", [( "yuan", ""),
( "alex", ""),
("egon", "")]) conn.commit()
#关闭指针对象
cur.close()
#关闭连接对象
conn.close()

model代码

---views

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.
def login(request):
print(request.POST) # 这个是获取form表单的提交方法
if request.method=="POST":
print(request.POST)#这个是获取form表单的提交方法
username=request.POST.get("user")
password=request.POST.get("pwd")
if username=="frank" and password=="":
return redirect("/index.html/")#跳转到个人主页
# else:#else 可以去掉啦
# name="frank"
return render(request, "login.html")
def register(request):
if request.method=="POST":
username=request.POST.get("user")
password=request.POST.get("pwd")
# hobby=request.POST.getlist("hobby")#一个键获得多个值时用这种方法
import pymysql
conn = pymysql.connect(host='', port=3306, user='root', passwd='', db='day66')
cur = conn.cursor()
SQL = "insert into userinfo (name,pwd)values(%s,%s)";
rows = cur.execute(SQL,(username, password))
conn.commit()
print (rows)#返回影响的行数
if rows :
cur.close()
conn.close()
return redirect("/login.html/")
else:
return render(request,"register.html")
def index(request):
name="frank"#写死了
return render(request,"index.html",{"n":name})#可以使用session得到

视图函数

Template

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
<style>
.cc{
margin-left: 250px;
margin-top: 200px;
}
</style>
</head>
<body> <div class="cc">
<h1>注册页面</h1>
<form action="{% url 'register' %}" method="post">
<p> 姓名:<input type="text" name="user"></p>
<p> 密码:<input type="password" name="pwd"></p>
<!--<p> 爱好:-->
<!--<input type="checkbox" name="hobby" value="basketball">篮球-->
<!--<input type="checkbox" name="hobby" value="shuangseqiu ">双色球-->
<!--<input type="checkbox" name="hobby" value="football">足球--> <!--</p>-->
<p><input type="submit"></p></div>
</form> </body>
</html>

注册页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
<style>
.cc{
margin-top: 200px;
margin-left: 300px;
}
</style>
</head>
<body>
<div class="cc">
<h1>登陆页面</h1>
<form action="{% url "login" %}" method="post">
<p>姓名:<input type="text" name="user"></p>
<p>密码:<input type="password" name="pwd"></p>
<p><input type="submit"></p>
</form>
</div>
</body>
</html>

登陆页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
<style>
.cc{
margin-right: 200px; }
</style> </head>
<body>
<div class="cc">
<h1>hello{{ n }} </h1>
<h1>欢迎回来</h1>
</div>
</body>
</html>

个人中心

    

Django之views的更多相关文章

  1. Python Django 之 Views HttpRequest HttpReponse

    一.Python Django 之 Views 数据交互 http请求中产生两个人核心对象: http请求:HttpRequest对象 http响应:HttpReponse对象 所在位置django. ...

  2. [Django笔记] views.py 深入学习

    views.py 是django MTV 中的主要逻辑层,相当于MVC中的 Controller 以下的实例都基于这样一个路由表: urlpatterns = [ url(r'^(index)?$', ...

  3. Django之views系统

    Django的View(视图)简介 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  4. Django Class Views

    一.Base views View class django.views.generic.base.View 主要的基于类的基本视图.所有其他基于类的视图都从这个基类继承而来.它不是一个通用的视图,因 ...

  5. Django中views笔记

    reverse反解析 #路由中定义namespace.name,reverse可将其转换为url url = reverse('namespace:name') return redirect(url ...

  6. django中views中方法的request参数

    知其然亦要知其所以然 views每个方法的参数都是request,那么问题来了,request为何物? 首先,几乎每个方法都是取数据(无论是从数据库,还是从第三方接口),然后进行一定的处理,之后传给前 ...

  7. Django之views视图函数

    views视图函数属于MTV中逻辑处理的部分视图函数包含着两个对象,HttpRequest对象和HttpResponse对象 一.HttpRequest对象 HttpRequest对象在Django中 ...

  8. 关于django Class-based views的理解

    django是mvt模式,其中v就是这个显示逻辑部分,简单来讲,view函数可以说是接收request,然后处理,返回response的主体函数. 对于一些简单的逻辑关系,可以用直接用函数模式来进行处 ...

  9. Django的views视图系统

    老师的博客:http://www.cnblogs.com/liwenzhou/articles/8305104.html 以看老师的博客为主 一个视图函数(类),简称视图,是一个简单的Python 函 ...

随机推荐

  1. Delphi常用快捷键

    delphi是我学编程时的入门语言,用过一年多的时光,个人对它还是挺喜欢的.现在用的少了,一些快捷键和语法也有些遗忘了,这里对delphi的快捷键做个总结,留个纪念.嘿嘿,不知道还有多少人还用着这门语 ...

  2. Maven教程(2)--Maven的配置,MyEclipse与Eclipse的配置

    1.修改Maven的 repository的路径 2.找到mirrors 使用阿里云镜像 <mirror> <id>alimaven</id> <name&g ...

  3. [转]angular2中ng alerts的使用教程

    本文转自:https://blog.csdn.net/m0_37981481/article/details/79281879 由于想要一个好看的alert,于是去npm上搜了一下,手动捂脸,npm上 ...

  4. windows server 2008 R2 开启远程桌面

    1.计算机  ——属性 2.远程设置 3.远程桌面-允许运行任意版本远程连接-选择用户-添加用户:Administrator;或是可以是其他非管理员用户(默认的系统管理员已经被授予了访问权限); 点确 ...

  5. [PHP] 数据结构-二叉树的创建PHP实现

    1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFu ...

  6. canvas学习和滤镜实现

    最近学习了 HTML5 中的重头戏--canvas.利用 canvas,前端人员可以很轻松地.进行图像处理.其 API 繁多,这次主要学习常用的 API,并且完成以下两个代码: 实现去色滤镜 实现负色 ...

  7. php 对象转数组

    //参考网上 但是别人给的方法有错误的地方public function eleme_callback(){ $res = (object) array('1' => 'foo'); $data ...

  8. 初学CSS-2-文本的属性

    文本装饰属性: 格式:text-decoration:underline: 取值:underline(下划线) line-through(删除线) overline(上划线) none(什么都没有) ...

  9. git与vscode连接的一种简单方式

    首先你得安装git,如果你还没安装git,推荐你一个视频git的下载与安装,这套视频包含VS code和git的基本使用,当你看完它,就可以不看我的这篇博客了. 废话不多说,直接进入正题: 首先进入g ...

  10. 网站pc端分享QQ好友,空间,微博

    在开发pc端网站的过程中,涉及到邀请好友的功能,之前单纯的复制粘贴已经无法满足用户的体验.故,仿照移动端添加自动分享到QQ好友,QQ空间,QQ微博的功能. 分享到QQ好友:http://connect ...