博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django的第一步(第一节)
阅读量:5317 次
发布时间:2019-06-14

本文共 5569 字,大约阅读时间需要 18 分钟。

写下你的第一个Django应用

第一部分

    让我们通过例子来学习.

    在本教程中,我们将引导您完成基本投票应用程序的创建.

    其中包括两部分:

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

    我们假设你django已经安装好了,你可以通过下面的shell命令得知django的版本:

python -m django --version

    如果django已经安装好了,你可以看到安装的版本.如果没有,你会得到错误提示"No module named django".

    这个教程基于django2.0,支持python3.4以及后面的版本.如果django的版本不匹配,可以在右下角选择合适的版本,或者升级django版本.如果你正在使用老版本的python,你可以根据下图去找到合适的点击django版本.

创建一个项目

    如果这是你第一次使用django,你会关心一些初始化设置.换句话说,你需要下面的指令自动生成一个django项目,其中包含数据库配置,django特定的选项和应用特定的选项.

    从命令行,cd进入你想创建django项目的文件夹,然后执行下面的指令:    

django-admin startproject mysite

    这条命令将会在你的文件夹中创建一个mysite文件夹.

注释:

    你需要避免在创建django项目与python或django内置组件相同,尤其是,你应该避免使用django(与django本身发生冲突)或者test(与python内置文件冲突).

代码应该放置在哪?

    如果你的背景是普通的旧PHP(没有使用现代框架),那么你可能习惯于把代码放在Web服务器的文档根目录下(比如/ var / www).用Django,你不这样做.将任何Python代码放入Web服务器的文档根目录中并不是一个好主意,因为它有可能让人们能够通过Web查看您的代码.这样安全性不好.    

    将代码放在文档根目录之外的某个目录中,例如/ home / mycode.

让我们看看startproject这个指令都创建了什么:

mysite/    manage.py    mysite/        __init__.py        settings.py        urls.py        wsgi.py
下面解释这些文件:
  • 外部的mysite/是你项目的容器.它的名字不影响django;你可以随你喜欢地修改名字
  • manage.py:一个代码管理工具,可以让你用各种方式与django进行交互.你可以读到关于manage.py的所有功能在
  • 内部的mysite/是你django项目的实际文件夹.它的名字是你需要用来导入任何内容的Python包名(例如:mysite.urls)
  • mysite/__init__.py:一个空的文件用来告诉python,这个文件夹是一个python包.如果你是一个python初学者,建议你先了解一下python包的含义
  • mysite/setting.py:用于配置django的设置.通过可以了解到settings的工作方式
  • mysite/urls.py:django项目的url管理器,可以设置你django项目可以访问的网页url.通过可以了解更多关于URLS
  • mysite/wsgi.py:WSGI兼容的Web服务器为您的项目提供服务的入口点

---------------------------------------------------------------------------------------------------------------------

开发服务器

    让我们检验我的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 11, 2018 - 19:22:09Django version 2.0.4, using settings 'blogproject.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CONTROL-C.
注释:

    现在请忽略数据库迁移的问题,这个问题会在稍后进行处理.

    你已经开始使用django开发服务器了,这是一个纯粹用Python编写的轻量级Web服务器.这些功能我们已经在django中包含了,所以你可以很快地进行开发,你可以直接进行开发,不需要去配置生产服务器,比如像Apache这样的网页服务器.

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

    现在服务器正在运行,可以通过来访问你的网页,你可以看到"The install worked successfully! Congratulations!",还有一个起飞的火箭,说明它正在工作.

切换端口:

    runserver这个命令默认会以8000作为端口号开启服务器.

    如果你想要改变服务器的端口号,将它作为命令的参数输入.下面是个例子,这个命令开启服务器在8080端口上:

python manager.py runserver 8080

    你如果你想改变服务器的IP地址,将ip地址与端口号一起作为参数传递即可,如果出现错误,如下

Invalid HTTP_HOST header: '127.1.1.1:8080'. You may need to add '127.1.1.1' to ALLOWED_HOSTS.

    说明你需要把该IP加入setting.py文件中ALLOWED_HOSTS中即可.

    如果你想收听所有可用的公共IP(如果你正在运行Vagrant或希望在网络上的其他计算机上炫耀你的工作,这很有用),请使用:

python manage.py runserver 0:8000
0
0.0.0.0的简称.
有关开发服务器的完整文档可以在参考中找到。

    

自动重新加载服务器:

    您无需重新启动服务器以使代码更改生效。但是,某些操作(如添加文件)不会触发重新启动,因此在这种情况下您必须重新启动服务.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建一个Polls应用:

    现在你的服务器环境已经搭建好了,你可以开始工作了.

    你在django中编写的每一个应用都遵循特定的python包. django带有一个实用的工具可以自动生成应用的基本目录结构,所有你可以把注意力放在写代码上而不是创建文件目录.

项目对比应用:

    项目和应用的不用是什么呢?应用是网页应用程序,它可以执行一些操作,比如公共记录数据库或者简单的投票系统.项目是一个特定网页配置和网页应用程序的集合,一个项目可以包含多个应用,一个应用可以在多个项目中.

    你的所有应用可以在你python路径上的任何地方.在本教程中,我们会创建Poll应用与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代码写入:

polls/views.py中       

from django.http import HttpResponsedef index(request):    return HttpResponse("Hello, world. You're at the polls index.")

    这是可能是django中最简单的视图了.要调用这个视图,我们需要将它映射到一个URL - 为此我们需要一个URLconf.

    需要创建一个URLconf在polls文件夹中.创建一个文件叫做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 pathfrom . import viewsurlpatterns = [    path('',views.index, name='index'),]

    下一步是将根的URLconf指向polls.urls模块.在mysite/urls.py添加导入django.urls.include然后在urlpatterns列表中添加一个include(),以便导入polls.urls模块:

mysite/urls.py文件中

from django.contrib import adminfrom django.urls import path,includeurlpatterns = [    path('admin/', admin.site.urls),    path('polls/',include('polls.urls')),]

    include()函数允许访问其他的URLconf.任何时候django碰到include()函数,它会暂停在这个URL在当前URLconf中的匹配,转而进入include函数中的URLconfs中找寻匹配.

    include()函数的主要想法是让引用URLs更加方便.因为投票是在自己的URLconf中(polls/urls.py),他们可以被放置在"/polls/"之下,或者"/fun_polls/"之下,或者"/content/polls/"之下,或者其他根目录之下,这个应用都可以工作.

什么时候使用include()函数?
    你应该总是使用
include()函数当你要添加其他URL模型时.
admin.site.urls 是唯一一个不可以使用的例外.

    你现在已经将一个视图连接到URLconf了,现在验证它是否工作,运行下面的指令:

python manage.py runserver

    通过浏览器访问,然后你应该可以看到"Hello, world. You’re at the polls index.",这些是你在index中写下的.

    path()函数会传递四个参数,其中两个是必须的:路径(route)视图(view),两个可以可选属性:kwargs名字(name).我们需要回顾一下这四个参数.

路径(route)

路径是一个字符串,包含了URL模型.处理请求时,django从urlpattens第一个URL开始往下,匹配请求的URL,直到找到一个匹配的URL.

视图(view)

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

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

名字(name)

命名你的URL可以让你从django其他地方明确地引用它,特别是在模板中.这个强大的功能允许你只在单个文件中对项目的URL模式进行全局修改.

如果你对基本请求和响应流程这一节感到满意,请阅读本教程的第2节以开始使用数据库。

转载于:https://www.cnblogs.com/GF66/p/9785489.html

你可能感兴趣的文章
GPRS以TCP上传数据到服务器OK,但收不到服务器下发的数据
查看>>
随笔分类 - Bootloader(转)
查看>>
海思uboot启动流程详细分析(转)
查看>>
基于 FPGA 的图像边缘检测(转)
查看>>
为什么说基于TCP的移动端IM仍然需要心跳保活?(转)
查看>>
如何编写Linux设备驱动程序(转)
查看>>
TCP连接探测中的Keepalive和心跳包(转)
查看>>
c语言字符串分割函数(转)
查看>>
移动端IM系统的协议选型:UDP还是TCP?(转)
查看>>
高通电池曲线(转)
查看>>
MWC飞控增加声纳定高的方法(转)
查看>>
Gsensor驱动调试(转)
查看>>
Arduino遥控套装(转)
查看>>
2.4G天线在PCB板上的设计
查看>>
非常实用: 2.4G天线设计指南(赛普拉斯工程师力作)
查看>>
UDP包的大小与MTU
查看>>
linux中keepalived实现nginx高可用配置
查看>>
BZOJ4808马——二分图最大独立集
查看>>
BZOJ3732Network——kruskal重构树+倍增+LCA/最小生成树+倍增
查看>>
MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
查看>>