(一)django——新建project和app、编写视图

下面学习过程中的虚拟机地址:172.16.92.30

1、安装

(尽量使用持续支持的版本https://www.djangoproject.com/download/)

pip install django==1.11.16

2、创建project项目

[root@localhost test]# django-admin startproject mysite
[root@localhost test]# cd mysite/
[root@localhost mysite]# ls
manage.py  mysite
[root@localhost mysite]# python manage.py runserver 0.0.0.0:8000
#Django将运行在8000端口,整个局域网内都将可以访问站点,而不只是是本机

浏览器访问http://172.16.92.30:8000报错:

Invalid HTTP_HOST header: '172.16.92.30:8000'. You may need to add u'172.16.92.30' to ALLOWED_HOSTS.

#更改settings.py允许所有主机访问
ALLOWED_HOSTS = [’*’]

再次访问显示It worked!则正常。

3、project项目的目录说明

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
  • 外层的mysite/目录与Django无关,只是你项目的容器,可以任意命名。
    -manage.py:一个命令行工具,用于与Django进行不同方式的交互脚本,非常重要!
  • 内层的mysite/目录是真正的项目文件包裹目录,它的名字是你引用内部文件的包名,例如:mysite.urls。
  • mysite/__init__.py:一个定义包的空文件。
  • mysite/settings.py:项目的主配置文件,非常重要!
  • mysite/urls.py:路由文件,所有的任务都是从这里开始分配,相当于Django驱动站点的内容表格,非常重要!
  • mysite/wsgi.py:一个基于WSGI的web服务器进入点,提供底层的网络通信功能,通常不用关心。

4、创建app应用

app应用与project项目的区别:

  • 一个app实现某个功能,比如博客、公共档案数据库或者简单的投票系统;
  • 一个project是配置文件和多个app的集合,这些app组合成整个站点;
  • 一个project可以包含多个app;
  • 一个app可以属于多个project!

app的存放位置可以是任何地点,但是通常都将它们放在与manage.py脚本同级的目录下,这样方便导入文件。
进入mysite目录,确保与 manage.py 文件处于同一级,并且键入以下命令来创建app:
[root@localhost mysite]# python manage.py startapp polls
系统会自动生成 polls应用的目录(这个目录结构将用于存放poll应用程序),其结构如下:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

5、编写视图

让我们写第一个视图。打开文件 polls/views.py,并输入以下Python代码:

polls/views.py
from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

这是Django中最简单的视图。要调用视图,我们需要将它映射到一个URL,为此,我们需要一个URLconf。

要在polls目录中创建一个URLconf,在polls文件夹中创建一个名为 urls.py 的文件。您的应用目录现在应该像这样:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

编辑 polls/urls.py 文件:

polls/urls.py
from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

你可以看到项目根目录下的mysite目录也有个urls.py文件, 下一步是让这个项目的主urls.py文件指向我们建立的polls这个app独有的urls.py文件, 打开 mysite/urls.py 文件,你需要先导入include模块,代码如下:

mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

方法 include() 相当于二级路由策略, 它将接收到的url地址去除了它前面的正则表达式,将剩下的字符串传递给下一级路由进行判断。

include的背后是一种即插即用的思想。项目根路由不关心具体app的路由策略, 只管往指定的二级路由转发,实现了解耦的特性。app所属的二级路由可以根据自己的需要随意编写, 不会和其它的app路由发生冲突。app目录可以放置在任何位置,而不用修改路由。这是软件设计里很常见的一种模式。

建议:除了admin路由外,尽量给每个app设计自己独立的二级路由。

路由设置成功后,启动服务器 python manage.py runserver 0.0.0.0:8000,然后在浏览器中访问地址http://172.16.92.30:8000/polls/。将看到“Hello, world. You’re at the polls index.”

6、url() 参数说明:

url()方法可以接收4个参数,其中2个是必须的:regex和view,以及2个可选的参数:kwargs和name
url() 参数:regex
regex是正则表达式的通用缩写,它是一种匹配字符串或url地址的语法。 Django拿着用户请求的url地址,在urls.py文件中对urlpatterns列表中的每一项条目从头开始进行逐一对比, 一旦遇到匹配项,立即执行该条目映射的视图函数或二级路由,其后的条目将不再继续匹配。因此,url路由的编写顺序至关重要!

需要注意的是,regex不会去匹配GET或POST参数或域名, 例如对于 https://www.example.com/myapp , regex只尝试匹配 myapp/ 。 对于 https://www.example.com/myapp/?page=3 , regex也只尝试匹配 myapp/

url() 参数:view
当正则表达式匹配到某个条目时,自动将封装的 HttpRequest 对象作为第一个参数, 正则表达式“捕获”到的值作为第二个参数,传递给该条目指定的视图。 如果是简单捕获,那么捕获值将作为一个位置参数进行传递,如果是命名捕获,那么将作为关键字参数进行传递。

url() 参数:kwargs
任意数量的关键字参数可以作为一个字典传递给目标视图。

url() 参数: name
对你的URL进行命名,可以让你能够在Django的任意处,尤其是模板内显式地引用它。 相当于给URL取了个全局变量名,不会将url匹配地址写死,你只需要修改这个全局变量的值,在整个Django中引用它的地方也将同样获得改变。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值