Django基础1-请求和响应

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/fww330666557/article/details/82941920

一、配置开发环境

安装命令:

pip3 install django

查看版本:

python3 -m django --version
2.1.2

版本的选择:
作为学习当然选择最新版本了, 默认安装的也是最新版本。

django2.0	 python3.4, python3.5, python3.6
django2.1	 python3.5, python3.6, python3.7

更多版本对应信息请查看:
https://yiyibooks.cn/qy/django2/faq/install.html#faq-python-version-support

二、创建第一个项目

在命令行(终端)中,cd到你想要用来保存代码的目录,然后运行如下命令:

$ django-admin startproject mysite

创建的项目目录结构如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
  • 外层的mysite/根目录仅仅是项目的一个容器。 它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字。
  • manage.py: 一个命令行工具,可以使你用多种方式对Django项目进行交互。
  • 内层的mysite/目录是你的项目的真正的Python包。 它是你导入任何东西时将需要使用的Python包的名字。
  • mysite/init.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。
  • mysite/settings.py:该Django 项目的设置/配置。
  • mysite/urls.py:该Django项目的URL声明;是你的Django站点的“目录”。
  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。

注意:
项目的命名要避免与Python内置包或Django组件重名。
代码应该存在哪里?
将Python代码放在你的Web服务器的根目录不是个好主意,因为它可能会有让别人在网上看到你的代码的风险。 这样不安全。
将你的代码放置在Web服务器根目录以外的地方,例如/home/mycode。

三、开发服务器

1、启动服务器

在外部mysite目录,运行以下命令:

$ python3 manage.py runserver

看到以下输出表明你已经启动了Django开发服务器:

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.

January 17, 2018 - 15:50:53
Django version 2.0, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

这是一个用纯Python写的轻量级Web服务器。 我们在Django中内置了它,这样你就可以在不配置用于生产环境的服务器 —— 例如Apache —— 的情况下快速开发出产品,直到你准备好上线。

需要注意的是:不要在任何生产环境使用这个服务器。

在浏览器地址栏输入:http://127.0.0.1:8000/, 就可以看到运行的效果了。

2、更改端口

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

使用如下命令更改端口号为8080:

$ python3 manage.py runserver 8080

请在浏览器地址栏输入:http://127.0.0.1:8080/, 查看端口修改后的运行效果。

注意:
以这种方式更改的端口号,会重新启动开发服务器,并且更改效果只在服务器运行期间有效。服务器以默认方式(runserver之后不加端口号)重启之后,会恢复为8000.

3、runserver服务器的自动重载

开发服务器启动之后,修改并保存代码,runserver服务器会自动重载,使代码生效。 但是,某些操作(如添加文件)不会触发重新启动,因此在这种情况下您必须重新启动服务器(这块需特别注意:后面的静态文件处理时,需要添加一些文件,是必须要重启服务器的,不然操作不会生效)。

四、创建投票应用程序

项目已经创建好了,接下来就要创建程序了。

1、项目与应用程序

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

Django带有一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。

2、创建应用程序

要创建您的应用,请确保您与manage.py位于同一目录中,然后输入以下命令:

$ python manage.py startapp polls

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

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

该目录结构将容纳我们的投票应用程序。

3、写下你的第一个视图

a、添加视图

添加视图在polls/views.py中进行:

from django.http import HttpResponse

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

这里添加了一个最简单的视图,页面上只会显示括号中的文字。

b、调用视图

要调用视图,我们需要将它映射到一个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文件中包含以下代码:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步是将根URLconf指向polls.urls模块。 在mysite/urls.py中, 加入一个django.urls.include的import, 然后插入一个 include()函数 在 urlpatterns 列表中, 如下:

from django.urls import include, path
from django.contrib import admin

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

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

使用include()的目的是为了让URL更易进行热插拔(plug-and-play)。 由于polls是在他自己的URLconf(polls/urls.py),他们可以被放置在“/ polls /”,或“/ fun_polls /”下,或“/ content / polls /” ,或任何其他路径的根,应用程序将仍然工作。

何时使用include()?
包含其他网址格式时,您应始终使用include()。 admin.site.urls 是唯一的例外。

启动服务器,并在浏览器中转到http://localhost:8000/polls/,您应该看到文本“Hello, world. You’re at the polls index.“,这就是index视图中定义的文本内容。

c、path()函数

path()函数传递四个参数,两个参数:route和view,以及两个可选的参数: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对象作为第一个参数,并且以route中的任何“捕获”值作为关键字参数。
  • path()参数:kwargs
    任意关键字参数可以在字典中传递给目标视图。本教程中不会使用该特性。
  • path()参数:name
    命名您的URL可以让您从Django其他地方明确地引用它,特别是在模板中。 这个强大的功能允许您在只操作单个文件的情况下对项目的URL正则进行全局更改。

猜你喜欢

转载自blog.csdn.net/fww330666557/article/details/82941920