django guide--app--1

本文介绍如何使用Django创建项目及应用,包括命令行工具的使用、基本文件结构解析、开发服务器启动方法及首个视图的实现过程。

创建一个项目

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

$ django-admin startproject mysite

(startproject 后面接项目名)

我们来看看startproject创建的内容:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

这些文件是:

  • 外部mysite/根目录只是您项目的容器。它的名字与Django无关; 你可以将它重命名为任何你喜欢的东西。
  • manage.py:一个命令行实用程序,可让您以各种方式与此Django项目交互。你可以阅读所有的细节manage.pyDjango的管理和manage.py链接
  • 内部mysite/目录是您的项目的实际Python包。它的名字是你需要用来导入任何内容的Python包名(例如mysite.urls)。
  • mysite/__init__.py:一个空文件,告诉Python这个目录应该被视为一个Python包。如果您是Python初学者,请阅读官方Python文档中有关软件包的更多信息链接
  • mysite/settings.py:这个Django项目的设置/配置。 Django设置会告诉你有关设置如何工作的所有信息。
  • 链接
  • mysite/urls.py:这个Django项目的URL声明; 您的Django支持的网站的“目录”。您可以在URL调度器中阅读更多关于URL的内容
  • mysite/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点。有关更多详细信息,请参阅如何使用WSGI进行部署

怎么使用WSGI进行部署参考官方文档:WSGI部署


开发服务器

让我们验证你的Django项目的作品。mysite如果尚未更改到外部目录,请运行以下命令:

$ python manage.py runserver

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

执行系统检查...

系统检查确定没有问题(0沉默)。

您有未应用的迁移; 在应用之前,您的应用可能无法正常工作。
运行'python manage.py migrate'来应用它们。

2018年4月23日 -  15:50:53
Django版本2.0,使用设置'mysite.settings'http://127.0.0.1:8000/开始开发服务器
使用CONTROL-C退出服务器。

你已经开始使用Django开发服务器,这是一个纯粹用Python编写的轻量级Web服务器。我们在Django中包含了这个功能,所以您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好生产。

现在是值得注意的时候了:不要在类似于生产环境的任何情况下使用此服务器。它仅用于开发时使用。(我们的业务是制作Web框架,而不是Web服务器。)

现在服务器正在运行,请使用Web浏览器访问http://127.0.0.1:8000/你会看到一个“恭喜!”页面,火箭起飞。有效!

更改端口

默认情况下,该runserver命令在内部IP的端口8000上启动开发服务器。

如果您想更改服务器的端口,请将其作为命令行参数传递。例如,该命令在端口8080上启动服务器:

$ python manage.py runserver 8080

如果您想更改服务器的IP,请将其与端口一起传递。例如,要收听所有可用的公共IP(如果您正在运行Vagrant或想要在网络上的其他计算机上展示您的工作,这很有用),请使用:

$ python manage.py runserver 0:8000

00.0.0.0的快捷方式有关开发服务器的完整文档可以在runserver参考文献中找到

自动重新加载 runserver

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

创建投票应用程序

既然你的环境 - 一个“项目” - 已经建立起来了,你就开始工作了。

您在Django中编写的每个应用程序都包含遵循特定约定的Python包。Django带有一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

项目与应用程序

项目和应用程序有什么区别?应用程序是一种Web应用程序,它可以执行某些操作,例如Weblog系统,公共记录数据库或简单的轮询应用程序。项目是特定网站的配置和应用程序的集合。项目可以包含多个应用程序。一个应用程序可以在多个项目中。

您的应用程序可以在您的任何地方居住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代码放入其中:

民调/ 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,请创建一个名为的文件urls.py你的app目录现在应该如下所示:

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'),
]

下一步是将URL URL指向polls.urls模块。在中 mysite/urls.py,添加一个导入django.urls.includeinclude()urlpatterns列表中插入一个 ,这样你就可以:

mysite的/ urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

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

背后的想法include()是使插入和播放网址变得容易。由于民意测验是在他们自己的URLconf(polls/urls.py)中,他们可以放在“/ polls /”下,或者放在“/ fun_polls /”下,或者放在“/ content / polls /”下,或者任何其他路径根下,工作。

何时使用 include()

include()包含其他网址格式时,请务必使用。 admin.site.urls这是唯一的例外。

您现在已将index视图连接到URLconf。让我们验证它的工作,运行以下命令:

$ python manage.py runserver

在您的浏览器中转到http:// localhost:8000 / polls /,您应该看到“ Hello,world ”文本你在投票指数。“,你在index视图中定义的 

path()函数传递四个参数,其中两个是必需的: routeview,以及两个可选的:kwargs,和name在这一点上,值得回顾一下这些论点是什么。

path()参数:route

route是一个包含URL模式的字符串。在处理请求时,Django从第一个模式开始urlpatterns并在列表中向下,将所请求的URL与每个模式进行比较,直到找到匹配的模式。

模式不搜索GET和POST参数或域名。例如,在请求中https://www.example.com/myapp/,URLconf将查找myapp/在请求中https://www.example.com/myapp/?page=3,URLconf也将查找myapp/

path()参数:view

当Django找到一个匹配的模式时,它会以一个HttpRequest对象作为第一个参数以及路由中的任何“捕获”值作为关键字参数来调用指定的视图函数我们将稍微举一个例子。

path()参数:kwargs

任意关键字参数可以在字典中传递给目标视图。我们不打算在教程中使用Django的这个特性。

path()参数:name

命名您的URL可以让您从Django其他地方明确地引用它,特别是在模板中。这个强大的功能允许您在只触摸单个文件的情况下对项目的URL模式进行全局更改。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值