Django项目-编写Django应用
来源:互联网 发布:淘宝店铺打理 编辑:程序博客网 时间:2024/05/18 21:51
本教程是为Django - 1.11和Python - 3.4或更高版本编写的
实践部分分为:
- 一个让人们查看民意调查并投票的公共网站。
- 一个管理网站,可让您添加,更改和删除民意调查。
我们假设你已经安装了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查看代码。这对安全性不好。
把你的代码放在文档根目录以外的某个目录中,比如
我们来看看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
将在命令行上看到以下输出:
执行系统检查...系统检查确定没有问题(0沉默)。您有13 个未应用的迁移; 在应用之前,您的应用可能无法正常工作。运行“python manage.py migrate”来应用它们。2017年12月10日 - 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 0:8000
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
第一个视图
打开文件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模式进行全局更改,同时只触摸单个文件。
- Django项目-编写Django应用
- Django学习系列(二)——编写第一个Django应用part1_项目与应用
- django入门 创建项目、应用
- 初始django笔记之编写第一个django应用
- 编写第一个Django应用:第二部分
- Django教程-编写可重用应用
- 编写你的第一个Django应用
- django应用
- Django项目
- 基于Django的xadmin项目应用
- Django项目中的Admin应用详解
- 怎样用django创建项目和应用
- Django项目与Django应用的关系及django.apps模块
- 第一个django,django项目
- django新闻页面编写
- Django 编写Rss订阅
- Django-part1-编写应用程序
- Django学习系列(三)——编写第一个Django应用part2_模型
- Linux 安装Redis4.0
- Java中wait和sleep方法的区别
- 入场动画
- 文章标题
- ExecutorService的正确关闭方法
- Django项目-编写Django应用
- 状态机(一):抽象的控制流程模型
- netty源码分析之-ByteBuf详解以及与JDK中ByteBuffer差异(11)
- 「Deep Learning」理解Pytorch中的「torchvision.transforms」
- 性能测试之常见系统应用分层架构
- JS中some(),every(),forEach(),map(),filter()区别
- Scala基础学习之tuple(元组),Array(数组),Map(映射)
- 空间统计学习笔记——DBSCAN 聚类分析
- Mysql : Mysql引擎