美文网首页
Django 学习四:url路由和视图

Django 学习四:url路由和视图

作者: 十八度的帝都 | 来源:发表于2017-12-02 20:56 被阅读24次

    前面我们已经创建好数据模型了,并且在admin后台中添加了一些测试用户。下面我们就要设计好站点的url路由、对应的处理视图函数以及使用的前端模板了。

    一、 路由设计

    我们初步设想需要下面的四个URL:

    URL 视图 模板 说明
    /index/ login.views.index() index.html 主页
    /login/ login.views.login() login.html 登录
    /register/ login.views.register() register.html 注册
    /logout/ login.views.logout() 无需专门的页面 登出

    考虑到登录系统属于站点的一级功能,为了直观和更易于接受,这里没有采用二级路由的方式,而是在根路由下直接编写路由条目,同样也没有使用反向解析名(name参数)。根据上面的策划,打开mysite/urls.py文件,写入下面的代码:

    from django.conf.urls import url
    from django.contrib import admin
    from login import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^login/', views.login),
        url(r'^register/', views.register),
        url(r'^logout/', views.logout),
    ]
    

    注意要先从login导入views模块。

    二、 架构初步视图

    路由写好了,就进入login/views.py文件编写视图的框架,代码如下:

    from django.shortcuts import render
    from django.shortcuts import redirect
    
    # Create your views here.
    
    
    def index(request):
        pass
        return render(request, 'login/index.html')
    
    
    def login(request):
        pass
        return render(request, 'login/login.html')
    
    
    def register(request):
        pass
        return render(request, 'login/register.html')
    
    
    def logout(request):
        pass
        return redirect("/index/")
    

    我们先不着急完成视图内部的具体细节,而是把框架先搭建起来。

    注意:

    • 在顶部额外导入了redirect,用于logout后,页面重定向到‘index’首页;
    • 四个视图都返回一个render()调用,render方法接收request作为第一个参数,要渲染的页面为第二个参数,以及需要传递给页面的数据字典作为第三个参数(可以为空),表示根据请求的部分,以渲染的HTML页面为主体,使用模板语言将数据字典填入,然后返回给用户的浏览器。
    • 渲染的对象为login目录下的html文件,这是一种安全可靠的文件组织方式。

    三、 创建HTML页面文件

    在项目根路径的login目录中创建一个templates目录,再在templates目录里创建一个login目录。这么做有助于app复用,防止命名冲突,能更有效地组织大型工程,具体说明请参考教程前面的相关章节。

    login/templates/login目录中创建三个文件index.htmllogin.html以及register.html

    ,并写入如下的代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    <h1>首页!</h1>
    </body>
    </html>
    

    login.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
    <h1>登录页面</h1>
    </body>
    </html>
    

    register.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>注册</title>
    </head>
    <body>
    <h1>注册页面</h1>
    </body>
    </html>
    
    

    到目前为止,我们的工程目录结构如下图所示:

    12.png-22.4kB

    四、 测试路由和视图

    启动服务器,在浏览器访问http://127.0.0.1:8000/index/等页面,如果能正常显示,说明一切OK!

    13.png-11kB

    现在,我们整个项目的基本框架已经搭建起来了!
    原文:http://www.liujiangblog.com/course/django/106

    相关文章

      网友评论

          本文标题:Django 学习四:url路由和视图

          本文链接:https://www.haomeiwen.com/subject/uokobxtx.html