Django项目-编写Django应用

来源:互联网 发布:淘宝店铺打理 编辑:程序博客网 时间:2024/05/18 21:51

本教程是为Django - 1.11和Python - 3.4或更高版本编写的

实践部分分为

  1. 一个让人们查看民意调查并投票的公共网站。
  2. 一个管理网站,可让您添加,更改和删除民意调查。

我们假设你已经安装了Django。您可以通过在shell提示符下运行以下命令(由$前缀指示)来告诉Django已经安装以及哪个版本:

python -m django --version

如果安装了Django,你应该看到你的安装版本。
如果不是,则会显示“No module named django”错误。
如果您仍在使用Python 2.7,则需要稍微调整代码示例

请参阅如何安装Django以获取有关如何移除较旧版本Django并安装较新版本的建议。

创建项目

如果这是你第一次使用Django,你需要进行一些初始设置。
也就是说,您需要自动生成一些代码来建立一个Django 项目

一个Django实例的设置集合,包括
数据库配置,Django特定的选项和特定于应用程序的设置。

从命令行,cd到您要存储代码的目录中,然后运行以下命令:

django-admin startproject mysite

这将mysite在当前目录中创建一个目录。

注意:
您需要避免在内置Python或Django组件之后命名项目。特别是,这意味着你应该避免使用像 django(这将与Django本身冲突)或test(与内置Python包冲突)的名称。

这个代码应该在哪里居住?

如果你的背景是普通的旧PHP(没有使用现代框架),你可能习惯于把代码放在Web服务器的文档根目录下(比如/var/www)。

用Django,你不这样做。将这些Python代码放在​​Web服务器的文档根目录中并不是一个好主意,因为这样做有可能使人们能够通过Web查看代码。这对安全性不好。

把你的代码放在文档根目录以外的某个目录中,比如
/home/DjangoTemp

我们来看看startproject命令创建的是什么:

 dsite /    manager.py     dsite /         __init__.py         setting.py         url.py         wsgi.PY

文件归纳:

  • 最外部  dsite/  根目录是项目的 容器

    dsite 的名字与 Django无关; 你可以把它重命名为任何你喜欢的东西。

  • manage.py:一个命令行实用程序,可让您以各种方式与此Django项目进行交互。

    你可以阅读所有的细节 在Django的管理中的manage.py

  • 内部 dsite/ 目录是 项目  的实际Python包

    它的名字(此处是 dsite)是你在其他应用中需要用来导入的Python包名(例如 dsite.urls)。

  • dsite/ init.py:一个空的文件,告诉Python 这个目录应该被认为是一个Python包

  • dsite/ settings.py: Django项目的配置文件。

  • Django的设置会告诉你所有的设置工作。

  • dsite/ urls.py:Django项目的URL声明;

    Django 支持站点的“目录”。

  • dsite/ wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。

    参阅如何使用WSGI进行部署。

department服务器

让我们验证Django项目能否启用
dsite如果尚未更改到外部目录,请运行以下命令:

python manage.py runserver

将在命令行上看到以下输出:
sds

执行系统检查...系统检查确定没有问题(0沉默)。您有13 个未应用的迁移; 在应用之前,您的应用可能无法正常工作。运行“python manage.py migrate”来应用它们。20171210日 -  15:50:53Django版本1.11,使用设置'dsite.settings'在http://127.0.0.1:8000/开始运行服务器使用CONTROL-C退出服务器。
注意
现在请忽略关于未应用数据库迁移的警告;
我们很快就会处理数据库。

您已经开始使用Django department服务器,这是一个纯粹用Python编写的轻量级Web服务器

我们在Django中包含了这个功能,所以您可以快速开发,而无需处理配置web服务器(如Apache)

值得注意的是:不要使用类似于生产环境的任何东西。
它仅用于部署时使用。我们正在开发Web框架,而不是Web服务器。


现在服务器正在运行,通过使用Web浏览器访问http://127.0.0.1:8000/。
如果看到一个“欢迎来到Django”的页面,说明简单运行有效!

改变端口

默认情况下,该 runserver 命令将启动 localhost 上8000端口的 department服务器。
如果要更改服务器的端口,请将其作为命令行参数传递。

例如,这个命令在端口8080上启动服务器:

python manage.py runserver 8080

如果要更改服务器的IP,请将其与端口一起传递。

例如,要收听所有可用的公共IP(如果想要在网络上的其他计算机上访问您的web,请使用:

python manage.py runserver 08000

0是0.0.0.0的快捷方式。

自动重新加载 runserver

department服务器可以自动根据需要为每个请求重新加载Python代码。
您不需要重新启动服务器以使代码更改生效。
但添加文件等一些操作不会触发重新启动
因此在这种情况下您必须重新启动服务器。

创建应用

环境已搭建成功

一个“项目” - 已经建立,可以开始做工作了。

在Django中编写的每个应用程序都包含遵循特定约定的Python包。

Django自带了一个实用程序,可以自动生成应用程序的基本目录结构

因此您可以专注于编写代码而不是创建目录。

项目和应用程序的区别:

  • 应用程序是一个Web应用程序,它执行某些集合操作

    例如Weblog系统,公共记录数据库或简单的轮询应用程序

  • 项目是特定网站的配置和应用程序的集合

    项目可以包含多个应用程序。一个应用程序可以在多个项目中。

任何一个应用程序都可以通过添加python路径到在任何项目中

我们将在 dsite/ 下的manage.py 文件旁 创建我们的投票应用程序
以便将其导入为自己的顶级模块,而不是子模块 dsite中。

创建应用程序命令

请确保 shell路径 位于与manage.py相同的目录下

键入此命令:

python manage.py startapp Polls

这将创建一个目录polls,其布局如下:

manage.pypolls/     __init__.py     admin.py     apps.py     migrations /         __init__ .py     models.py     tests.py    view.PY

sd

第一个视图

打开文件polls/views.py 并将下面的Python代码放入其中:

在Polls/ views.py 中代码为 :

from django.http  import HttpResponsedef  index (request ):    return  HttpResponse ("Hello,world。You're at the polls index."
这是Django中最简单的视图。
要调用视图,我们需要将它映射到一个URL
为此,我们需要一个URLconf

要在polls目录中创建URLconf,请创建一个名为的文件urls.py。

在polls/urls.py文件中包含以下代码:

from django.conf.urls  import urlfrom . import  viewsurlpatterns =  [     URL ([R '^ $' , view.index , name = 'index' ),]

下一步是将项目 URL中的URL 指向polls.urls模块。

在 dsite/urls.py
导入 django.conf.urls.include
并在urlpatterns 中使用 include()

代码如下:

from django.conf.urls  import include , URL from django.contrib import adminurlpatterns =  [     URL ([R '^Polls/'include'Polls.urls' )),    URL ([R '^admin/' , admin.site.urls ),]

附:

python同目录包使用包名导入
djngo.conf设置模块
djngo.contrib拓展模块

include()函数使一个URLconf允许引用其他模块中的URLconf

注意:

include()函数的正则表达式 没有$(字符串结尾匹配字符),而是一个尾部的斜杠。

每当Django遇到的时候 include(),它会截断与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以供进一步处理。

include()是使插入和使用网址变得容易。
由于 关于 Poll的 url 是 应用的 URLconf(polls/urls.py)
他们可以被放置在“/ polls /”下,或者在“/ fun_polls /”下,或者在“/ content / polls /”或者任何其他路径根URL下,工作。

何时使用 include()

include()包含其他应用URL格式时,请务必使用。
admin.site.urls 这是唯一不符合你所看到的例外。

如果你看到include(admin.site.urls) 或者不仅仅是 admin.site.urls一项的admin的URL,说明使用的是其他的Django版本。

现在已经把一个index视图函数从应用URL链接到了项目URLconf中

验证它是否可以工作,运行以下命令:

python manage.py runserver

在你的浏览器中转到http:// localhost:8000 / polls /
可以看到在index视图中定义的内容 。

url()参数:

url()函数传递四个参数

两个必选:regex(匹配项) 和 view(视图函数)
两个可选:kwargs 和 name。

url()参数:regex

正则表达式 是一种常用的短格式,用于匹配字符串中的模式的语法,或者在这种情况下匹配的是url模式

Django 从第一个正则表达式开始,并在URLconf列表中向下,将所请求的URL与每个正则表达式进行比较,直到找到匹配的正则表达式。

请注意,这些正则表达式不搜索GET和POST参数或域名。
例如

在一个请求中https://www.example.com/myapp/,URLconf会查找myapp/。
在一个请求中https://www.example.com/myapp/?page=3,URLconf也将被查找myapp/。

如果您需要正则表达式的帮助,请参阅re模块的文档。

在实践中,你不需要成为正则表达式的专家,因为你只需要知道如何捕捉简单的模式。事实上,复杂的正则表达式可能会有很差的查询性能,所以你可能不应该依赖正则表达式的全部力量。

最后,性能说明:
这些正则表达式在URLconf模块首次加载时被编译。他们超快(只要查找不像上面提到的那么复杂)。

url()参数:view

当Django发现正则表达式匹配时,Django调用指定的视图函数
HttpRequest对象作为第一个参数,并将正则表达式中任何“捕获”值作为其他参数。
如果正则表达式使用简单的捕获,值作为位置参数传递;
如果它使用命名捕获,值作为关键字参数传递。

url()参数:kwargs

任意关键字参数都可以在字典中传递给目标视图

url()参数:name

命名 所要使用的URL可以从Django其他地方明确地引用它,
特别是在模板中
这个强大的功能使您可以对项目的URL模式进行全局更改,同时只触摸单个文件。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海岛奇兵小米版换手机了怎么办 申诉找回微信密码验证吗错误怎么办 微信密码忘了申诉不成功怎么办 微信密码忘了申诉不了怎么办 微信密码忘了申诉不回来怎么办 微信号密码忘了申诉失败怎么办 手机微信密码忘了无需申诉怎么办 安全守护2手机绑定密码错误怎么办 新办的手机号注册过魅族账号怎么办 百度网盘手机找回被别人关了怎么办 把朋友微信号弄没了怎么办 小米顶配版手机无线网速度慢怎么办 刺激战场用过模拟器后用手机怎么办 百度网盘分享文件有违禁内容怎么办 百度网盘好友发的分享不存在怎么办 4g手机的下载速度很慢怎么办 为什么打开百度网盘的速度慢怎么办 百度网盘限制了我的宽带速度怎么办 联通信号很好但网速特别慢怎么办 苹果手机版本低下载不了软件怎么办 国内的手机要上推特和油管要怎么办 推特注册了卡在手机号怎么办 腾讯微信登录的账号密码忘了怎么办 打开手机浏览器自动跳到网页怎么办 游戏包解压后找不到启动的怎么办? 每次都要解压一次才能运行怎么办 误冲了王者荣耀点劵怎么办 机顶盒上开通的vip手机上怎么办 王者荣耀以前玩的区找不到了怎么办 电脑分辨率调高了游戏进不去怎么办 键盘语言更改后进不去系统怎么办 高尔夫旅行款 被锁在车内怎么办 在天猫买东西垫付的运费不退怎么办 天猫店一口价定价定低了怎么办 服务器开机账号改了密码忘了怎么办 小米儿童电话手表开不开机怎么办? 上海拍牌超过5次违章怎么办 拍拍贷不能更新还不了款怎么办 起诉网贷平台不知道地址怎么办 网贷不知道在哪个平台借的怎么办 车过户后出现问题车主不承认怎么办