Django的第一步(第一节)

写下你的第一个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.pymysite/__init__.pysettings.pyurls.pywsgi.py
下面解释这些文件:
  • 外部的mysite/是你项目的容器.它的名字不影响django;你可以随你喜欢地修改名字
  • manage.py:一个代码管理工具,可以让你用各种方式与django进行交互.你可以读到关于manage.py的所有功能在django-admin and manage.py
  • 内部的mysite/是你django项目的实际文件夹.它的名字是你需要用来导入任何内容的Python包名(例如:mysite.urls)
  • mysite/__init__.py:一个空的文件用来告诉python,这个文件夹是一个python包.如果你是一个python初学者,建议你先了解一下python包的含义
  • mysite/setting.py:用于配置django的设置.通过django settings可以了解到settings的工作方式
  • mysite/urls.py:django项目的url管理器,可以设置你django项目可以访问的网页url.通过URL dispatcher可以了解更多关于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:09
Django 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服务器。)    

    现在服务器正在运行,可以通过http://127.0.0.1:8000/来访问你的网页,你可以看到"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
00.0.0.0的简称.有关开发服务器的完整文档可以在runserver参考中找到。

    

自动重新加载服务器:

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

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

创建一个Polls应用:

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

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

项目对比应用:

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

    你的所有应用可以在你python路径上的任何地方.在本教程中,我们会创建Poll应用与manage.py文件同一个路径下,所以它可以被直接作为主模块被调用,而不是作为mysite的子模块.

    创建你的应用,确认你已经进入了与manage.py同目录下,然后执行下面的目录:

python manage.py startapp polls

    这个命令创建了polls文件夹, 其中目录像下面这样:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyviews.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__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyurls.pyviews.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 admin
from 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

    通过浏览器访问http://localhost:8000/polls/,然后你应该可以看到"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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ad中电源插座怎么封装_您可以在房屋中安装的各种电源插座

ad中电源插座怎么封装You may already know about smart outlets, or outlets with integrated USB ports. But you might be surprised at how many “normal” outlets you can actually buy for your house. They’re all built for different situations, and you want to …

Django05-2:路由分发/命名空间/伪静态/虚拟环境/django版本区别

路由分发 补充:每一个应用可以有独立的templates模板文件夹,static静态文件加,urls.py 总路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

minecraft服务器_如何使用Minecraft领域设置简单的无压力Minecraft服务器

minecraft服务器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自动化测试基础篇--Selenium浏览器操作

Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退、前进按钮等。一、控制浏览器窗口大小有时候我们希望能以某种浏览器尺寸打开,让访问的页面在这种尺寸下运行。例如可以将浏…

Sublime text3配置xdebug调试记录

第一次配置遇到的问题记录; 问题:配置php.ini的时候xdebug.remote_port 9001刚开始我一直配置9000端口冲突,然后一切弄好了访问浏览器就一直在转圈无法访问; 现在开始配置: 1.打开sublime 输入install Package如下显示在按回车&a…

.NET Conf China 2022 今天(12.4) 日程一览

点击蓝字关注我们.NET Conf China 2022 诚邀您的加入立即扫码预约加入.NET年度盛宴!!CSDN 直播https://bbs.csdn.net/forums/DotNET?typeId20680 思否直播https://segmentfault.com/area/dotnetconf-2022主论坛分论坛前端专场-A会场出品人:张…

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.4.6 为克隆使用序列化

2.4.6 为克隆使用序列化 序列化机制有一种很有趣的用法:即提供了一种克隆对象的简便途径,只要对应的类是可序列化的即可。其做法很简单:直接将对象序列化到输出流中,然后将其读回。这样产生的新对象是对现有对象的一个深拷贝&…

谈谈ASP.NET Core过滤器和中间件的区别

什么是中间件中间件Middleware是所有请求都会执行的,适合用在权限校验,一些公用字段处理,例如分页信息获取.asp.net core 提供了IApplicationBuilder接口来让把中间件注册到asp.net的管道请求当中去,中间件是一个典型的AOP应用。下面是一个微软官方的一个中间件管道…

如何在Windows 8中将旧控制面板添加到Metro Start屏幕

By default there is no way to easily access the old Control Panel in Windows 8, in order to get to it you have to go through the new Metro Control Panel or switch to Explorer. Here’s how to create your own tile for it. 默认情况下,无法轻松访问Wi…

vue子父组件间传值

父组件传值给子组件 props方式   父组件上1处声明传递的键并赋值,子组件2处使用props接收一下这个键就可以使用了。在父组件改变这个值的话子组件跟着一起响应,子组件改变这个值的话父组件不改变。次为响应式,但是也仅限于父组件的值变化子…

红象云腾发布新一代PB级高速大数据平台产品

ZD至顶网服务器频道 03月23日 新闻消息:在3月19日举办的China Hadoop Summit(中国Hadoop技术峰会)上,中国Hadoop大数据厂商红象云腾与OpenPOWER基金会共同发布红象云腾的新一代大数据产品,帮助企业高速处理PB规模数据。 此次发布…

个人笔记 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

为什么80%的码农都做不了架构师?>>> 模板创建项目 模板地址 更新package.json中的dependencies依赖到最新版本 当新建一个项目的时候,从其他项目的package.json里面copy一份dependencies过来。 但因为是新项目,我们想用各个依赖包…

dotnet-exec 0.12.0 released

dotnet-exec 0.12.0 releasedIntrodotnet-exec 是一个 C# 程序的小工具,可以用来运行一些简单的 C# 程序而无需创建项目文件,让 C# 像 python/nodejs 一样简单,而且可以自定义项目的入口方法,支持但不限于 Main 方法。Install/Upd…

美国用户现在可以下载其所有Apple帐户数据,这是操作方法

Starting today, Apple is allowing all US users to download a copy of every last bit of their data from the company. 从今天开始,Apple允许所有美国用户从该公司下载其数据的最后一部分的副本。 This feature has been available for EU users since May, th…

“互联网+”促传统企业三大转型

2015年是传统行业互联网化的元年。国家提出要制定“互联网”行动计划后,互联网旅游、互联网汽车、互联网三农、互联网物流、互联网医疗等开始起步。同时,面对不确定的移动互联网时代,互联网某些技术和模式还在进化、演变之中,每一…

开发高性能ASP.NET应用

本文是“.NET Conf China 2022”上我的一个分享,这里更细化的分享出来。分享分为四个部分:制定指示设计应用正确测试性能优化高性能:不一定是架构出来的,但一定是优化出来的。制定指标-收集首先把项目中的热路径API和核心API找出来…

Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化

聚合查询 单独使用时,用aggregate 1.只要是跟数据库相关的模块 基本都在django.db.models里面 如果没有应该在django.db里面 2. 聚合查询通常配合分组使用 from django.db.models import Avg, Sum, Max, Min, Count# 1.所有书的平均价格 resmodels.Book.objects.…

记事本状态栏不会自动_如何在记事本中同时启用状态栏和自动换行

记事本状态栏不会自动The status bar in Windows’ Notepad displays the current line number and column number of the cursor location. However, if you find that the Status Bar option on the View menu is grayed out, it may be because you have Word Wrap enabled…

极端高温导致澳大利亚断网

西澳大利亚首府珀斯因恶劣天气出现了网络连接问题, 网络故障不是由于暴风雨或闪电引起的,而是极端高温。本周一是珀斯有记录以来第六热的天,当天最高温度达到了44.4℃。因为创纪录的高温,澳大利亚宽带 服务商iiNet在当…

推荐一款采用 .NET 编写的 反编译到源码工具 Reko

今天给大家介绍的是一款名叫Reko的开源反编译工具,该工具采用C#开发,广大研究人员可利用Reko来对机器码进行反编译处理。我们知道.NET 7 有了NativeAOT 的支持,采用NativeAOT 编译的.NET程序 无法通过ILSpy 之类的传统工具得到源码&#xff0…