Django基于正则表达式的URL(1)
1. 此时,用户只能看到列表,如果用户想查看详细信息,应该再增加程序。
2. 把信息用a标签包起来以后,详细信息就有了可以跳转的功能。
.
3. 点击不同的用户名时,获取到不同的信息。
3.1 在urls.py中写对应关系
3.2 在views.py中写函数
3.3 在index.html中更新模板
3.4 运行结果:获取到了nid
3.5 点击,获取到相应的信息。
3.6 返回的信息太简单了,把views.py中的信息更新如下
此时返回的信息如下:
3.7 更新程序
3.7.1 在urls.py中增加对应关系
3.7.2 在views.py中更新函数
3.7.3 更新detail.html模板
3.7.4 运行结果:
4.Django支持另外一种传参。
第1种方式:127.0.0.1:8000/detail/?nid=1,(一般用户认为这种是动态的,因为他们认为nid=XXX是可变的)
第2种方式:127.0.0.1:8000/detail-1.html,(认为这种是不变的。但其实这种的变化是在detail=XXXX处)
需要用到正则表达式。
4.1 在urls.py中修改对应关系
4.2 URL匹配上了,传了一个值过来。咱们的detail函数中得有个参数去获取一下。这样的话,我们就不需要通过request.get去取值了,Django已经从URL中帮我们提取出来了,
url(r'^detail-(\d+).html', views.detail),
detail(request,nid): 随便一个参数名字都可以,用于接收(\d+)
相当于写了一个动态路由关系。过程如下: 4.3 在urls.py中修改对应关系
4.4 在views.py中修改函数 4.5 detail.html中程序如下
4.6修改index.html中的程序
整个流程是:index里面有个a标签,里面的href指向了detail.html标签。detail的这个对应关系也应该写到urls.py中。 urls.py程序
from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
url(r'^login/', views.login),
url(r'^home/', views.Home.as_view()),
#url(r'^detail/', views.detail),
url(r'^detail-(\d+).html', views.detail),
]
views.py
from django.shortcuts import render,HttpResponse,redirect # Create your views here.
# USER_DICT={
# 'k1':'root1',
# 'k2':'root2',
# 'k3':'root3',
# 'k4':'root4',
# } # USER_LIST=[
# {'name':'root'},
# {'name':'root'},
# {'name':'root'}
# ]
#
# {% for item in user_list %}
USER_DICT={
'1':{'name':'root1','email':'root@live.com'},
'2':{'name':'root2','email':'root@live.com'},
'3':{'name':'root3','email':'root@live.com'},
'4':{'name':'root4','email':'root@live.com'},
'5':{'name':'root5','email':'root@live.com'},
}
def index(request):
return render(request,'index.html',{'user_dict':USER_DICT})
def login(request):
if request.method=='GET':
return render(request,'login.html')
elif request.method=='POST':
#radio
#v1=request.POST.get('gender')
#print(v1)
#checkbox
#v2=request.POST.getlist('favor')
#print(v2)
#v3=request.POST.get('fafafa')
#print(v3)
obj=request.FILES.get('fafafa')
print(obj,type(obj),obj.name)
import os
file_path=os.path.join('upload',obj.name)
f=open(file_path, mode="wb")
for i in obj.chunks():
f.write(i)
f.close() return render(request,'login.html')
else:
# put,delete,head,option.....
return redirect('/index/') # def detail(request,nid):
# nid=request.GET.get('nid')
# detail_info=USER_DICT[nid]
# return render(request,'detail.html',{'detail_info':detail_info})
def detail(request,nid):
#return HttpResponse(nid)
detail_info=USER_DICT[nid]
return render(request,'detail.html',{'detail_info':detail_info}) from django.views import View
class Home(View):
def dispatch(self,request,*args,**kwargs):
#调用父类中的dispatch
print('before')
result=super(Home,self).dispatch(request,*args,**kwargs)
print('after')
return result def get(self,request):
print(request.method)
return render(request,'home.html')
def post(self,request):
print(request.method)
return render(request,'home.html') """def login(request):
if request.method=='GET':
return render(request,'login.html')
elif request.method=='POST':
u = request.POST.get('user')
p = request.POST.get('pwd')
if u=='root' and p=='123':
return redirect('/index/')
else:
return render(request,'login.html')
else:
# put,delete,head,option.....
return redirect('/index/')
"""
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for k,row in user_dict.items %}
<li><a target="_blank" href="/detail-{{k}}.html">{{row.name}}</a></li>
{% endfor %}
</ul>
</body>
</html>
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>详细信息</h1>
<h6>用户名:{{detail_info.name}}</h6>
<h6>邮箱:{{detail_info.email}}</h6>
</body>
</html>
整个流程图整理一下:
本节笔记:
一,路由系统,URL
1.一个URL对应一个函数或者对应一个类
url(r'^index/',views.index),url(r'^home/',views.Home.as_view()),
2.一类URL对应一个函数或类
url(r'^detail-(\d+).html',views.index),
Django基于正则表达式的URL(1)的更多相关文章
- Django基于正则表达式的URL(2)
Django基于正则表达式的URL(2) 1. 关于正则的说明 url(r'^detail-(\d+)-(\d+).html',views.detail), 当客户端输入 127.0.0.1:8000 ...
- django 基于正则表达式的url
方式一: urls.py from mytest import views urlpatterns = [ url(r'^index-(\d+)-(\d+).html', views.Index.as ...
- Django基于正则表达式匹配URL
在Django1.X中,是这样匹配的. 在Django2.X中,是这样匹配的. Django2.X中开始需要用re_path模块进行正则表达式匹配了,太JB坑了,卡了好久这个问题,最后还是问群里面的高 ...
- django基于正则的url匹配
url.py views.py index.html detail.html 访问:
- 【django基础补充之URL,视图,模版】
一.url路由配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代 ...
- Django框架02 /Django下载安装、url路由分发
Django框架02 /Django下载安装.url路由分发 目录 Django框架02 /Django下载安装.url路由分发 1. django下载安装 2. pycharm创建项目 3. 基于D ...
- Django和Flask对于URL尾斜杠(back slash)的处理
最近在看Flask,其中提到了对于URL尾斜杠的处理.感觉算是一个需要注意的地方吧,就和Django的处理方式来进行一个简单的对比. 首先说下什么是尾斜杠. http://www.baidu.com/ ...
- django(二)视图和URL配置
创建一份视图: 在上一节,使用django-admin.py startproject制作的mysite文件夹中,创建一个叫做views.py的空文件.这个Python模块健柏寒这一章的视图. vie ...
- python爬虫实战 获取豆瓣排名前250的电影信息--基于正则表达式
一.项目目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在txt文件中,html解析方式基于正则表达式 二.确定页面内容 爬虫地址:https://movie.douban.co ...
随机推荐
- Struts 2(四):类型转换
类型转换是Struts 2的一个非常重要的部分,通过类型转换能够将表单参数转换成Java中的各种类型,本文将详细介绍Struts 2的内建类型转换器和自定义类型转换器. 第一节 Struts 2内建类 ...
- Vue.js之常用指令
vue常用指令 vue.js官方给自己的定义是数据模板引擎,并给出了一套渲染数据的指令.本文详细介绍vue.js的常用指令. 官网:点我 一.v-text.v-html v-text:用于绑定文本 v ...
- pytest使用笔记(三)——pytest+allure+jenkins配置使用
按照pytest使用笔记(二)把pytest+allure配置好后,现在在jenkins配置好,先实现手动构建(立个小目标) 一,安装jenkins插件 首页->系统管理->插件管理,从“ ...
- Windows下Mongodb安装部署
1.下载安装包 mongodb-win32-x86_64-enterprise-windows-64-3.6.4.zip 解压 安装失败(当前环境windows server2012 R2):已验证可 ...
- 获取一个数组里面第K大的元素
如何在O(n)内获取一个数组比如{9, 1, 2, 8, 7, 3, 6, 4, 3, 5, 0, 9, 19, 39, 25, 34, 17, 24, 23, 34, 20}里面第K大的元素呢? 我 ...
- redis主从配置+sentinel哨兵
redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...
- Java基础知识:Java实现Map集合二级联动4
comboBox.setModel(new DefaultComboBoxModel(getProvince())); // 添加省份信息 final JLabel label = new JLabe ...
- 【python 3.6】使用itertools.product进行排列组合
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' import itertools colo ...
- Paper Reading - Sequence to Sequence Learning with Neural Networks ( NIPS 2014 )
Link of the Paper: https://arxiv.org/pdf/1409.3215.pdf Main Points: Encoder-Decoder Model: Input seq ...
- 华为笔试——C++括号匹配
题目:括号匹配 题目来源:https://blog.csdn.net/lizi_stdio/article/details/76618908 题目介绍:输入一个字符串,里面可能包含“()”.“ [ ...