编写你的第一个 Django 应用程序,第1部分
让我们通过示例来学习。
在本教程中,我们将引导您完成基本投票应用程序
它将由两部分组成:
- 一个公共网站,允许人们查看投票并在其中投票。
- 允许您添加、更改和删除投票的管理网站。
一、开发环境搭建
第一步当然就是安装 python,网上教程太多了,不再赘述。
第二步当然就是安装 django,直接使用
pip install django
本文使用 python 3.7.1
本文使用 django 3.2.18
二、创建项目
如果这是你第一次使用 Django 的话,你需要一些初始化设置。也就是说,你需要用一些自动生成的代码配置一个 Django project ——
即一个 Django 项目实例需要的设置项集合,包括数据库配置、Django 配置和应用程序配置。
打开命令行,cd
到一个你想放置你代码的目录,然后运行以下命令:
django-admin startproject mysite
让我们看看 startproject
创建了什么:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
这些目录和文件的用处是:
- 外部根目录是项目的容器。其 名字对姜戈来说并不重要;您可以将其重命名为您喜欢的任何名称。
mysite/
manage.py
:一个命令行实用程序,可让您与此交互 Django以各种方式进行项目。你可以在 django-admin 和 manage.py 中阅读所有细节。manage.py
- 内部目录是实际的 Python 包 项目。它的名称是您需要用于导入的 Python 包名称 里面的任何内容(例如)。
mysite/
mysite.urls
mysite/__init__.py
:一个空文件,告诉 Python 这 目录应被视为 Python 包。如果你是 Python 初学者, 在官方 Python 文档中阅读有关包的更多信息。mysite/settings.py
:这个姜戈的设置/配置 项目。Django 设置会告诉你所有关于如何设置的信息 工作。mysite/urls.py
:这个 Django 项目的 URL 声明;一个 Django 驱动的网站的“目录”。您可以阅读更多 URL 调度程序中的 URL。mysite/asgi.py
:ASGI兼容Web服务器的入口点 为您的项目服务。有关更多详细信息,请参阅如何使用 ASGI 进行部署。mysite/wsgi.py
:WSGI兼容Web服务器的入口点 为您的项目服务。有关更多详细信息,请参阅如何使用 WSGI 进行部署。
三、启动服务
让我们验证一下你的 Django 项目是否有效。切换到外部目录 mysite/下,如果 您还没有,请运行以下命令:
python manage.py runserver
你将在命令行上看到以下输出:
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. April 15, 2023 - 15:50:53
Django version 4.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
注意
暂时忽略有关未应用数据库迁移的警告;我们将处理 很快与数据库。
现在服务器正在运行,请访问 http://127.0.0.1:8000/ 您的网站 浏览器。你会看到一个“恭喜!”页面,火箭起飞了。 成功了!
更改端口
默认情况下,运行服务器命令启动开发服务器
在端口 8000 的内部 IP 上。
如果要更改服务器的端口,请通过 它作为命令行参数。例如,此命令启动服务器 在端口 8080 上:
$ python manage.py runserver 8080
如果要更改服务器的 IP,请将其与端口一起传递。为 例如,侦听所有可用的公共 IP(如果您 运行流浪者或想在其他计算机上展示您的工作 网络),使用:
$ python manage.py runserver 0.0.0.0:8000
开发服务器的完整文档可以在运行服务器
参考中找到。
自动重新加载运行服务器
开发服务器为每个请求自动重新加载 Python 代码 根据需要。您无需重新启动服务器即可进行代码更改 影响。但是,某些操作(如添加文件)不会触发重新启动, 因此,在这些情况下,您必须重新启动服务器。
四、创建投票应用
现在您的环境(一个“项目”)已设置完毕,您可以开始了 做工作。
你在 Django 中编写的每个应用程序都包含一个 Python 包,如下所示 某种约定。Django 带有一个自动生成的实用程序 应用的基本目录结构,因此您可以专注于编写代码 而不是创建目录。
------------------------------------------------------
项目与应用程序
项目和应用有什么区别?应用就是网络 执行某些操作的应用程序 - 例如,博客系统,数据库 公共记录或小型民意调查应用程序。项目是 特定网站的配置和应用程序。一个项目可以包含 多个应用。一个应用可以位于多个项目中。
------------------------------------------------------
你的应用可以位于 Python 路径上的任何位置。在 在本教程中,我们将在与文件相同的目录中创建我们的投票应用程序,以便它可以作为自己的顶级模块导入, 而不是 的子模块。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
此目录结构将容纳投票应用程序。
五、编写您的第一个视图
让我们写第一个视图。打开文件 polls/views.py 并将以下 Python 代码输入进去:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是 Django 中最简单的视图。要调用视图,我们需要映射 它到一个 URL - 为此我们需要一个 URLconf。
要在轮询目录中创建 URLconf,请创建一个名为 . 您的应用目录现在应如下所示: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.urls import path from . import views urlpatterns = [
path('', views.index, name='index'),
]
下一步是将根 URLconf 指向模块。在 mysite/urls.py 中,添加导入并在列表中插入 include(),
from django.contrib import admin
from django.urls import include, path urlpatterns = [
path("polls/", include("polls.urls")),
path("admin/", admin.site.urls),
]
include()
函数允许引用其他 URLconfs。 每当 Django 遇到 include()
时,它都会砍掉任何 部分 URL 匹配到该点,并将剩余的字符串发送到 包含 URLconf 以供进一步处理。
您现在已经将视图连接到 URLconf 中。验证它是否适用于 以下命令:index
$ python manage.py runserver
转到浏览器中的 http://localhost:8000/polls/,您应该会看到 文本“你好,世界。您位于投票索引“,这是您在视图中定义的。index
path()
函数传递了四个参数,两个必需的:和,两个可选的:和。 在这一点上,值得回顾一下这些论点的用途。route,
view,
kwargs,
name
path()
参数:route
route
是包含 URL 模式的字符串。处理请求时, Django 从第一个模式开始,然后向下发展 列表,将请求的 URL 与每个模式进行比较,直到找到一个 匹配。urlpatterns
模式不会搜索 GET 和 POST 参数或域名。例如 在请求 中,URLconf 将查找 。在请求 中, URLconf 也会寻找 .
https://www.example.com/myapp/
myapp/
https://www.example.com/myapp/?page=3
myapp/
path()
参数:view
当 Django 找到匹配的模式时,它会调用指定的视图函数 一个 HttpRequest
对象作为第一个参数和任何 从路由中“捕获”值作为关键字参数。我们举个例子 这有点。
path()
参数:kwargs
可以在字典中将任意关键字参数传递给目标视图。我们 不会在教程中使用 Django 的这个功能。
path()
参数:name
命名你的 URL 可以让你从 Django 的其他地方明确地引用它, 尤其是从模板内部。这个强大的功能使您可以制作 对项目的 URL 模式进行全局更改,同时仅接触单个 文件。
----------------------------end----------------------------------
编写你的第一个 Django 应用程序,第1部分的更多相关文章
- 编写你的第一个django应用程序2
从1停止的地方开始,我们将设置数据库,创建您的第一个模型,并快速介绍django自动生成的管理站点 数据库设置 现在,打开mysite/settings.py.这是一个普通的python模块,其中模块 ...
- 编写你的第一个django应用程序4
本教程上接教程3,我们将继续开发网页投票应用,本部分将主要关注简单的表单处理以及如何对代码进行优化 写一个简单的表单 让我们更新一下在上一个教程中编写的投票详细页面的模板(‘polls/detail. ...
- 编写你的第一个django应用程序3
这一篇从教程第2部分结尾的地方继续讲起.我们将继续编写投票应用,并且专注于如何创建公用界面--也被称为视图 概况 django视图概念是一类具有相同功能和末班的网页的集合,比如,在一个博客应用中,你可 ...
- Django教程:第一个Django应用程序(3)
Django教程:第一个Django应用程序(3) 2013-10-08 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第一部分(Page 6)
编写你的第一个 Django app,第一部分(Page 6)转载请注明链接地址 Django 2.0.1 官方文档翻译: Django 2.0.1.dev20171223092829 documen ...
- Django 2.0.1 官方文档翻译: 编写你的第一个 Django app,第五部分(Page 10)
编写你的第一个 Django app,第五部分(Page 10)转载请注明链接地址 我们继续建设我们的 Web-poll 应用,本节我们会为它创建一些自动测试. 介绍自动测试 什么是自动测试 测试是简 ...
- 第一个Django应用程序_part3
一.概述 此文延续第一个Django应用程序part2. 官方文档:https://docs.djangoproject.com/en/1.11/intro/tutorial03/ view是Djan ...
- 编写你的第一个Django应用
安装 Python 作为一个 Python Web 框架,Django 需要 Python.更多细节请参见 我应该使用哪个版本的 Python 来配合 Django?. Python 包含了一个名为 ...
- 搭建你的第一个Django应用程序
首先你要确保你机器上面安装了python:Python开发_python的安装 python的相关学习资料:http://www.cnblogs.com/hongten/tag/python/ 其次, ...
- Django教程:第一个Django应用程序(4)
Django教程:第一个Django应用程序(4) 2013-10-09 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
随机推荐
- elementPlus 问题总结
第一次搞,遇上很多弱智问题,记录一下 安装elementPlus $ npm install element-plus --save 全局引入 import ElementPlus from 'ele ...
- 单点登录-OAuth2
单点登录的实现原理 单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来 ...
- Practical Secure Aggregation for Privacy-Preserving Machine Learning
1 介绍 本文是谷歌团队发在CCS2017上的文章,旨在解决联邦学习中安全聚合的问题. 安全聚合:多方参与者将信息传递给聚合者,聚合者除了知道这个信息的总和不能知道任何一个特定参与者的信息. 在这篇文 ...
- Winform-耗时操作导致界面渲染滞后
原因: 某些耗时操作阻塞了主线程. 理解上述原因,需先搞清楚Winform线程机制.主要有以下2点特性:1.单线程模型:2.依赖消息循环. 1.单线程模型 Winform 默认是单线程.通常,所有的U ...
- ARM单片机知识点
1.STM32编译信息 代码占用FLASH 大小为:Code + RO-data, 7420字节(5054+2366),所用的RAM 大小为:RW-data + ZI-data, 8576(372+8 ...
- ubuntu通过tar包安装mysql5.7.21
作者:zuoguohui 一.场景:最近想搞mysql主从复制,需要在两台服务器上安装mysql,之前有一台已经装好了mysql5.7.21,于是在另外一台上也装mysql5.7.21,安装过程中碰到 ...
- 文本处理命令head tail more less tr cut paste wc
文本处理命令 命令**head tail more less tr cut paste wc** 磁盘分区利用率 df|tr -s ' ' :|cut -d : -f5 df|tr -s ' ' :| ...
- Luogu P2468 SDOI2010 粟粟的书架 题解 [ 紫 ] [ 可持久化线段树 ] [ 二分 ] [ 前缀和 ]
粟粟的书架:二合一的缝合题. 前一半测试点 此时是 \(200\times 200\) 的二维问题,首先考虑暴力怎么写,显然是每次询问把查的全扔进大根堆里,然后一直取堆顶直到满足要求或者取空. 那么这 ...
- Luogu P2414 NOI2011 阿狸的打字机 题解 [ 紫 ] [ AC 自动机 ] [ 离线思想 ] [ 树状数组 ] [ dfs 序 ]
阿狸的打字机:非常牛的 AC 自动机题. 暴力 先考虑在暴力的情况下,我们如何计算 \(x\) 匹配 \(y\) 的次数.显然,我们会模拟往 \(y\) 里加字符的过程,在此过程中做 KMP 进行匹配 ...
- 你还不会使用curl发送请求吗?一篇博客搞定!
前言:以下均为Windows使用,使用前不需要任何准备,打开命令提示符根据指令即可使用关键字: curl 注意: 建议在请求前ping一下 ping http://www.123.com 或 ping ...