第07章节-Python3.5-Django基于正则表达式的URL(一) 6

简介: image.pngurls.py:"""s14day19_2 URL ConfigurationThe `urlpatterns` list routes URLs to views.
image.png
  • urls.py:
"""s14day19_2 URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
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),
    # views.Home.as_view()是固定用法
    url(r'^home/', views.Home.as_view()),
    url(r'^detail/', views.detail),
]

image.png
  • index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--{{ user_dict.k1 }}-->
    <!--<ul>-->
        <!--{% for k in user_dict.keys %}-->
            <!--<li>{{ k }}</li>-->
        <!--{% endfor %}-->
    <!--</ul>-->
    <!--<ul>-->
        <!--{% for val in user_dict.values %}-->
            <!--<li>{{ val }}</li>-->
        <!--{% endfor %}-->
    <!--</ul>-->
    <ul>
        {% for k,row in user_dict.items %}
        <!--target="_blank"表示在新页面打开-->
        <li><a target="_blank" href="/detail/?nid={{ k }}">{{ row.name }}</a></li>
        {% endfor %}
    </ul>

</body>
</html>
image.png
image.png
  • 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>
image.png

image.png

image.png
  • @ 进一步动态路由

  • 修改urls.py(Django基于正则表达式的URL):


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),
    # views.Home.as_view()是固定用法
    url(r'^home/', views.Home.as_view()),
    # url(r'^detail/', views.detail),
    url(r'^detail-(\d+).html', views.detail),
]

image.png
  • 修改views.py:
from django.shortcuts import render,HttpResponse,redirect

# Create your views here.

# USER_DICT = {
#     'k1': 'root1',
#     'k2': 'root2',
#     'k3': 'root3',
#     'k4': 'root4',
# }

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 detail(request):
#     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})


'''
def login(request):
    # 判断用户获取数据方式是GET,就返回什么数据
    if request.method == "GET":
        return render(request, 'login.html')
    # 判断用户获取数据方式是POST,就判断用户提交的数据是否正确
    elif request.method == "POST":
        u = request.POST.get('user')
        p = request.POST.get('pwd')
        if u == 'alex' and p == '123':
            return redirect('/index/')
        else:
            return render(request, 'login.html')
    else:
        # PUT,DELETE,HEAD,OPTION...
        return redirect("/index/")

'''


def login(request):
    # 判断用户获取数据方式是GET,就返回什么数据
    if request.method == "GET":
        return render(request, 'login.html')
    # 判断用户获取数据方式是POST,就判断用户提交的数据是否正确
    elif request.method == "POST":
        # radio
        # v = request.POST.get('gender')
        # print(v)
        # v = request.POST.getlist('favor')
        # print(v)
        v = request.POST.get('fff')
        print(v)
        # 所有上传文件都上传到request.FILES
        obj = request.FILES.get('fff')
        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 home(request):
#     return HttpResponse('Home')


from django.views import View


class Home(View):

    # 调用父类中的dispatch(相当于助理,)
    def dispatch(self, request, *args, **kwargs):
        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, 'POST')
        return render(request, 'home.html')

image.png
  • 修改index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--{{ user_dict.k1 }}-->
    <!--<ul>-->
        <!--{% for k in user_dict.keys %}-->
            <!--<li>{{ k }}</li>-->
        <!--{% endfor %}-->
    <!--</ul>-->
    <!--<ul>-->
        <!--{% for val in user_dict.values %}-->
            <!--<li>{{ val }}</li>-->
        <!--{% endfor %}-->
    <!--</ul>-->
    <!--<ul>-->
        <!--{% for k,row in user_dict.items %}-->
        <!--&lt;!&ndash;target="_blank"表示在新页面打开&ndash;&gt;-->
        <!--<li><a target="_blank" href="/detail/?nid={{ k }}">{{ row.name }}</a></li>-->
        <!--{% endfor %}-->
    <!--</ul>-->
    <ul>
        {% for k,row in user_dict.items %}
        <!--target="_blank"表示在新页面打开-->
        <li><a target="_blank" href="/detail-{{ k }}.html">{{ row.name }}</a></li>
        {% endfor %}
    </ul>

</body>
</html>
image.png
  • $ 效果图:

image.png
image.png
目录
相关文章
|
3天前
|
Unix Shell Python
在Shell中转换Python正则表达式
结合以上提到的注意事项与差异点,就能在Shell环境中巧妙地转换并使用Python正则表达式了。务实和节省时间的做法是,将一些常见Python正则模式记在手边,随时查阅并对照POSIX标准进行调整。同时,借助在线正则表达式测试器和文档也能有效地提升在Shell环境中处理正则表达式的能力。
12 5
|
14天前
|
Python
【Python】正则表达式判断是否存在连续N个字母
文章提供了一个Python函数five_continue,使用正则表达式来判断字符串中是否存在连续5个或更多字母的情况,并返回存在此类序列的布尔值。
24 2
|
14天前
|
Python
【Python】正则表达式判断是否存在连续相同的两个字符,连续两个字符一模一样
Python函数isContinuousChar,使用正则表达式来检测字符串中是否存在连续的相同字母或数字,并返回存在此类字符的列表长度,如果列表长度为0则表示不存在连续相同的字符。
48 2
|
6天前
|
SQL 分布式计算 算法
【python】python指南(三):使用正则表达式re提取文本中的http链接
【python】python指南(三):使用正则表达式re提取文本中的http链接
7 0
|
1月前
|
前端开发 安全 测试技术
【Python】已解决:The method is not allowed for the requested URL.
【Python】已解决:The method is not allowed for the requested URL.
34 3
|
19天前
|
数据采集 XML 数据挖掘
Python中利用正则表达式进行数据清洗的实用指南打造未来数字生活:移动应用开发与系统创新
【7月更文挑战第31天】本文将深入探讨如何运用Python中的正则表达式库re,实现对数据集的有效清洗。文章将通过具体实例展示正则表达式在字符串处理、模式匹配和数据转换中的应用,帮助读者掌握使用正则表达式解决实际问题的能力。
14 0
|
2月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
25 2
|
2月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
2月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
1月前
|
存储 SQL Python
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。