美文网首页
Django -- Polls - Part 1

Django -- Polls - Part 1

作者: liaozb1996 | 来源:发表于2018-03-19 17:09 被阅读0次
    • 创建项目结构
    • 创建 APP -- Polls 结构
    • 创建视图 View
    • 配置/声明 URL -- URLconf

    投票系统

    该网站包括两部分:

    • 公共站点:展示内容和进行投票
    • 管理后台:添加/修改/删除投票内容

    创建项目

    $ mkdir polls_website
    $ cd polls_website/
    $ pipenv --three install Django
    $ pipenv shell
    $ django-admin startproject mysite
    

    项目的名字不能是 django ( 和django 本身冲突) 或 test (和 python 模块冲突)

    不能将项目的代码放在web服务的根目录 /var/www

    目录结构

    mysite/
        manage.py
        mysite/
            __init__.py
            settings.py
            urls.py
            wsgi.py
    
    • manage.py : 管理项目的工具
    • settings.py:项目的配置文件
    • urls.py:URL声明文件,将URL与视图函数关联起来
    • wsgi.py:配置 Django 与 Web Server 之间的 WSGI 接口

    Development Server

    $ cd mysite/
    $ python manage.py runserver
    
    Django

    Django 自带的测试Web服务器仅适用于开发过程,不适用于生产环境

    更多参数:默认监听 127.0.0.1:8000

    $ python manage.py runserver 8080 # 修改监听端口
    $ python manage.py runserver 0:8080 # 监听所有网卡,相当于 0.0.0.0:8080
    

    测试服务器会自动重新载入修改的 Python 文件;但当新创建文件时,还是要重启测试服务器,才能生效

    创建 APP

    在项目的根目录下创建APP

    $ ls
    db.sqlite3  manage.py  mysite
    
    $ python manage.py startapp polls
    

    注意,在项目的根目录下创建APP,使 polls 和 mysite 成为两个独立的 Python Package:这样,导入时可以使用 import polls ,而不是 import mysite.polls

    Project 和 APP

    项目相当于整个网站,而项目由多个APP构成,每个APP实现独立的功能(博客系统,评论系统,支付系统);APP可以重用于其他项目中

    创建视图

    # polls/views.py
    
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello World -- Polls")
    

    声明 URL

    #新建 polls/urls.py -- URLconf
    
    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    

    # mysite/urls.py -- root URLconf
    
    from django.contrib import admin
    from django.urls import path, include  # 导入include
    
    urlpatterns = [
        path('polls/', include('polls.urls')),  # 指向 polls/urls.py
        path('admin/', admin.site.urls),
    ]
    
    Polls

    root URLconf 会把匹配到的 URL 部分去掉,并将剩余部分传给指定的 URLconf


    URLconf
    • incldue():用于 root URLconf 指向其他 URLconf
    • path()path() 接受四个参数:route, view 和两个可选 kwargs, name

    path() 参数

    • route: 定义要匹配的URL(除去域名),在 urlpatterns 从上到下匹配
    • view:调用对应的 view 函数,并传给函数第一个参数 HttpRequest (可用于获取请求信息,GET,POST 数据等)
    • kwargs:将键值对以字典形式传给 view 函数
    • name:给URL命名,然后可以在模板用 name 引用 URL

    相关文章

      网友评论

          本文标题:Django -- Polls - Part 1

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