编写你的第一个web应用程序1
在shell中运行以下命令来检查django是否已安装及其版本
python -m django --version
如果django已经安装,你应该看到安装的版本号,如果还没有安装,你会看到一个‘no module named django’的错误
创建一个项目
django-admin startproject mysite
这将会在你的当前目录下生成一个mysite目录
注意,你给项目命名时,项目名称不能和python或django的内部组件名称同名,尤其,你应该避免使用类似django(与django本身冲突)或test(与内置python包冲突)这样的名称
我们看看startproject创造了什么
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
外部mysite/根目录只是项目的容器,它的名字对django来说无关紧要,你可以将它重名名为你喜欢的任何东西
manage.py:一个命令行实用程序,允许您以各种方式与此django项目进行交互,您可以manage.py在django-admin和manage.py中阅读有关的所有详细信息
内部mysite/目录是项目的实际python包,它的名称是您需要用来导入其中任何内容的python包名称(例如mysite.urls)
mysite/__init__.py:一个空文件,告诉python该目录应该被视为python包
mysite/settings.py:此django项目的设置/配置。django设置将告诉您有关设置如何工作的所有信息
mysite/urls.py:这个django项目的url声明,您的django支持的站点的‘目录’
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. August 04, 2018 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
暂时忽略有关未应用数据库迁移的警告,我们很快就会处理数据库
您已经启动了django开发服务器,这是一个纯粹用python编写的轻量级web服务器,我们已经将它包含在django中,因此您可以快速开发,而无需处理配置生产服务器(如Apache),直到您准备好进行生产
注意:不要在类似生产环境的任何地方使用这个服务器,它仅用于开发时使用
现在服务器正在运行,使用web浏览器访问http://127.0.0.1:8000,你会看到一个‘欢迎来到django’的页面
默认该runserver命令在端口8000的内部ip上启动开发服务器
如果要更改服务器的端口,请将其作为命令行参数传递
python manage.py runserver 8080
如果要更改服务器的ip,请将其与端口一起传递,例如,要监听所有可用的公共ip,如果你想要在网络上的其他计算机上展示你的工作,这很有用
python manage.py runserver 0:8000
0是0.0.0.0的快捷方式
开发服务器根据需要自动为每个请求重新加载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代码
from django.http import HttpResponse def index(request):
return HttpResponse('hello,world')
这是django最简单的视图,要调用视图,我们需要将其映射到url,为此我们需要一个urlconf
要在polls目录中创建urlconf,请创建一个名为url.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.conf.urls import url
from . import views#等同于from polls import views urlpatterns=[
url(r'^$',views.index,name='index'),
]
下一步是将根urlconf指向polls.urls模块,在mysite/urls.py,添加导入django.conf.urls.include并include()在urlpatterns列表中插入,所以你有:
from django.conf.urls import include,url
from django.contrib import admin urlpatterns=[
url(r'^polls/',include('polls.urls')),
url(r'^admin/',admin.site.urls),
]
该include()函数允许引用其他urlconf。请注意,该include()函数的正则表达式没有$(字符串结尾匹配字符),而是一个尾部斜杠。每当django遇到include(),它都会删除与该点匹配的url的任何部分,并将剩余的字符串发送到包含的urlconf以进行进一步的处理
背后的想法,include()是使即插即用的url变得容易,由于民意调查位于他们自己的urlconf(polls/urls.py)中,因此可以将它们放在‘/polls/’下,或‘/content/polls/’下,或任何其他路径根目录下,并且应用仍会工作
什么时候用include()
include()当您包含其他url模式时,应始终使用。admin.site.urls是惟一的例外
与你看到的不符?
如果您看到的include(admin.site.urls)不是公正的admin.site.urls,那么您可能正在使用与本教程版本不匹配的django版本,您将要切换到较旧的教程或较新的Django版本。
您现在已将index
视图连接到URLconf。让我们验证它是否正常工作,运行以下命令:
python manage.py runserver
在浏览器中转到http://localhost:8000/polls/,您应该看到文本‘hello,world’,您在index视图中定义的
该url()函数传递了四个参数,两个必需:regex和view,以及两个可选:kwargs,和name。在这一点上,值得回顾一下这些论点的用途
url()参数:正则表达式
它是用于匹配字符串中的模式的语法,或者在这种情况下是url模式。django从第一个正则表达式开始,沿着列表向下,将请求的url与每个正则表达式进行比较,直到找到匹配的正则表达式
请注意,这些正则表达式不会搜索GET和POST参数或域名。例如,在请求中
https://www.example.com/myapp/
,URLconf将查找myapp/
。在请求中
https://www.example.com/myapp/?page=3
,URLconf也会查找myapp/
。
只需要知道如何捕获简单模式,复杂的正则表达式具有较差的查找性能,
最后,一个性能说明,这些正则表达式是在第一次加载urlconf模块时编译的,它们超快(只要查找不是太复杂)
url()参数:视图
当django找到正则表达式匹配是,django调用指定的视图函数,将HttpRequest对象作为第一个参数,将正则表达式中的任何‘捕获’值作为其他参数,如果正则表达式使用简单捕获,则值将作为位置参数传递,如果它使用命名捕获,则值将作为关键字参数传递
url()参数:kwargs
任意关键字参数可以在字典中传递到目标视图,我们不打算在教程中使用这个功能
url()参数:名称
命名您的url可让您从django的其他地方明确的引用它,尤其是在模板中,此强大功能允许您在仅触摸单个文件的同时对项目的url模式进行全局更改
编写你的第一个web应用程序1的更多相关文章
- ASP.NET MVC3入门教程之第一个WEB应用程序
本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=91&extra=page%3D1 上一节,我们已经搭建好了AS ...
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
- Windows Azure入门教学系列 (二):部署第一个Web Role程序
本文是Windows Azure入门教学的第二篇文章. 在第一篇教学中,我们已经创建了第一个Web Role程序.在这篇教学中,我们将学习如何把该Web Role程序部署到云端. 注意:您需要购买Wi ...
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序【转】
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html 1. Web API简单说明 近来很多大型的平台都公开了Web API. ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序---近来很多大型的平台都公开了Web API
1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...
- 目前在做的一个web应用程序的前端选型
最近进入了一个新的项目组,要新起一个项目.这个Web项目是一个企业内部使用的系统,主要用来记录.追踪.管理潜在客户的数据.该系统有以下特点: 需要支持IE10及以上版本: 后端采用micro serv ...
随机推荐
- eclipse中mybatis generator插件的安装与使用,实现自动生成代码
git地址:https://github.com/mybatis/generator 下载后解压: 选择任意一个版本的jar放到eclipse的features目录下即可 选择任意一个版本的jar放到 ...
- vps
vps是指虚拟专用服务器(Virtual Private Servers),等同于一台远程计算机,有独立的IP地址,全天24小时不关机,可以部署博客.应用.服务 ***简称SS,可以用来搭建FQ服务器 ...
- EasyMvc入门教程-入门
1.EasyMvc简介 EasyMvc主要是为了丰富asp.net core mvc控件而出现的: 它提倡简单,面向对象式开发,希望能快速开发的同时,仍然保持一定的灵活性. 2.EasyMvc初相识 ...
- 性能测试报告模板 V1.0
1. 测试项目概述与测试目的 1.1 项目概述 本部分主要是针对即将进行压力测试的对象(接口.模块.进程或系统)进行概要的说明,让人明白该测试对象的主要功能与作用及相关背景. 1.2 测试目标 简要列 ...
- 自定义序列化4 (MFC调用C#的.dll)
CLR:CLR常用简写词语,CLR是公共语言运行时,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系 ...
- UNIX/LINUX使用expect实现人机自己主动交互功能
expect使用方法 [#!/usr/bin/expect] 这一行告诉操作系统脚本里的代码使用那一个shell来运行.这里的expect事实上和linux下的bash.windows下的cmd是一类 ...
- UIView属性的动画
//标记着动画块的开始,第一个参数表示动画的名字,起到标识作用 [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDurat ...
- js玩转数字----取整,四舍五入,数字字符串转换
取整: 向下取整Math.floor(),向上取整Math.ceil(),四舍五入Math.round()),保留有效数位n.toFixed(),产生大于等于0小于1的随机数Math.random() ...
- iOS 从UITableViewController中分离数据源
之前看objc.io #1 Light View Controllers看到一个非常不错的技巧:从UITableViewController中分离数据源,这样能够减小UITableViewContro ...
- Linux U盘只读解决方法
Linux Fat的U盘只读,这个问题经常出现,原因大家都说了是U盘的错误,出现这种情况后,一般的解决方案是 mount | grep <U盘的标签> # 找到你的U盘的对应的设备名称,如 ...