火棘种子千粒重多少克?

小说:火棘种子千粒重多少克?作者:顺宗密更新时间:2019-04-19字数:91763


该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程

所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址。

Python及Django学习QQ群:453131687


本章以创建一个Web投票应用为例子,手把手的教你如何使用Django开发Web应用,力图从全局范围带给大家一个整体的Django概念,让你对Django的设计理念、功能模块、体系架构、基本用法有个初步的印象。

该应用包括以下两个部分:

  • 一个可以让公众用户进行投票和查看投票结果的站点
  • 一个让可以进行增删改查的后台admin管理界面

在开始之前,再次重申,请确保已经安装最新版本的Django。可以在命令行或者$提示符下输入:

$ python -m django --version

如果没有显示版本号,而是提示“No module named django”,请返回前面的章节,参考安装Django。


一、 新建项目

进入你指定的项目保存目录,然后运行下面的命令:

$ django-admin startproject mysite

这将在目录下生成一个mysite目录,也就是你的这个Django项目的根目录。它包含了一系列自动生成的目录和文件,具备各自专有的用途。

注意:在给项目命名的时候必须避开Django和Python的保留关键字,比如“django”,“test”等,否则会引起冲突和莫名的错误。对于mysite的放置位置,不建议放在传统的/var/wwww目录下,它会具有一定的数据暴露危险,因此Django建议你将项目文件放在例如/home/mycode类似的位置。

一个新建立的项目结构大概如下:

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服务器进入点,提供底层的网络通信功能,通常不用关心。

PS:这一部分,我们可以在Pycharm环境下进行,参考上节内容。

二、 启动开发服务器

进入mystie项目的根目录,输入下面的命令:

$ python manage.py runserver

你会看到下面的提示,这表明Django的开发服务器已经启动,开始提供Web服务了:

Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run `python manage.py migrate" to apply them.
September 10, 2017 - 15:50:53
Django version 1.10, using settings `mysite.settings"
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Django提供了一个用于开发的web服务器,使你无需配置一个类似Ngnix的线上服务器,就能让站点运行起来。这是一个由Python编写的轻量级服务器,简易并且不安全,因此不要将它用于生产环境。

打开浏览器,访问http://127.0.0.1:8000/,你将看到Django的欢迎界面,一切OK!

Django的开发服务器(以后简称服务器)默认运行在内部的8000端口,如果你想指定端口,请在命令中显示给出:

$ python manage.py runserver 8080

如果想修改服务器的ip地址,请按下面的方式运行命令:

$ python manage.py runserver 0.0.0.0:8000

这时,Django将运行在8000端口,整个局域网内都将可以访问站点,而不只是是本机。

注意: Django的开发服务器具有自动重载功能,当你的代码有修改,每隔一段时间服务器将自动更新。但是,有一些例如增加文件的动作,不会触发服务器重载,这时就需要你自己手动重启。

PS:这一步操作也可以在Pycharm里完成。

三、 创建投票应用(app)

app应用与project项目的区别:

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

app的存放位置可以是任何地点,但是通常都将它们放在与manage.py脚本同级的目录下,这样方便导入文件。

进入mysite项目根目录,确保与manage.py文件处于同一级,输入下述命令:

$ python manage.py startapp polls

系统会自动生成 polls应用的目录,其结构如下:

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

在Pycharm中,没有可以创建app的图形化按钮,需要在下方的terminal终端中输入命令:

python manage.py startapp polls

这样也能创建polls应用。

image.png-29.9kB

四、编写第一个视图

polls/views.py文件中,编写代码:

from django.http import HttpResponse

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

为了调用该视图,我们还需要编写urlconf,也就是路由路径。现在,在polls目录中新建一个文件,名字为urls.py,在其中输入代码如下:

from django.conf.urls import url
from . import views

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

此时,目录的文件结构是这样的:

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

我们先不用深究url中代码的具体含义。

接下来,在项目的主urls文件中添加urlpattern条目,指向我们刚才建立的polls这个app独有的urls文件,这里需要导入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设计自己独立的二级路由。

好了,路由设置成功后,启动服务器,然后在浏览器中访问地址http://localhost:8000/polls/。一切正常的话,你将看到“Hello, world. You’re at the polls index.”


url()方法:

url()方法可以接收4个参数,其中2个是必须的:regexview,以及2个可选的参数:kwargsname

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/

如果你想深入研究正则表达式,可以读一些相关的书籍或专论,但是在Django的实际应用中,你不需要多高深的正则表达式知识,在Python教程部分有正则表达式相关专题,可供学习参考。

当URLconf模块加载的时候会预先编译正则表达式,因此它的匹配搜索速度非常快,你通常感觉不到。

view:

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

kwargs:

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

name:

对你的URL进行命名,让你能够在Django的任意处,尤其是模板内显式地引用它。这是一个非常强大的功能,相当于给URL取了个全局变量名,不会将url匹配地址写死。

url()方法的四个参数,每个都非常有讲究,这里先做基本的介绍,在后面有详细的论述。

当前文章:http://www.cnsdbtzg.com/play/gk8pxzd26y.html

发布时间:2019-04-19 00:32:45

紫穗槐边坡绿化效果好吗? 2107年金边麦冬苗多少钱一棵 广东可以栽植小叶黄杨吗? 求购八宝景天苗木,来华东大型产区购买 想知道哪里有粉色美人蕉出售,请你来这里 哪里有毛鹃苗基地? 紫花苜蓿是什么? 怎么种果岭草籽呢? 楼顶草坪用什么草呢? 适合公路边绿化的草花有哪些?

20246 74299 92799 61760 21752 75942 83829 60873 17966 78693 85998 71881 61650 75394 59853 71592 96561 75145 76807 95180 39448 77293 69271

我要说两句: (0人参与)

发布