第一个Django应用程序_part1
一、查看Django是否安装
参考文档:https://docs.djangoproject.com/en/1.11/intro/tutorial01/
如果Django已经安装,可以看到安装的版本号,如果没有安装则会看到“No module named django”的错误。
MacBook-Pro:~ h$ python3 -m django --version
1.11.
二、创建一个项目
从命令行创建Django项目
django-admin startproject mysite
会在当前目录下生成一个mysite目录。
注意:给项目命名的时候,项目名称不能和Pychon或Django的内部组件名称同名。尤其,应该避免使用类似test(与Django自身冲突)或者django(与Python内建的包冲突)这个的名称。
startproject生成以下文件
MacBook-Pro:PycharmProjects h$ tree mysite
mysite
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py directory, files
文件含义:
- 外层的mysite/根目录仅仅是项目的一个容器。这个名字与Django无关,可以将其命名为任何内容(只要不和Django内置名称冲突)。
- manage.py:一个命令行工具,可以是你用多钟方式对Django项目进行交互。可以在django-admin和manage.py中读到关于manage.py的所有细节。
- 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如:mysite.urls)。
- mysite/__init__.py:一个空简介,它告诉Python这个目录应该被看作一个Python包。
- mysite/settings.py:该Django项目的设置/配置。Django settings将告诉你这些设置如何工作。
- mysite/url.py:此Django项目的URL声明:Django驱动的网址的“目录”。
- mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。
启动服务
切换到mysite目录内,执行以下命令:
python3 manage.py runserver
命令输出为以下内容:
Performing system checks... System check identified no issues ( silenced). You have unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them. June , - ::
Django version 1.11., using settings 'mysite2.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
注意:暂时忽略有关未应用数据库迁移的告警;我们很快就处理数据库。
你已经开始使用Django开服务器,这是一个纯粹用Python编写的轻量级Web服务器。在Django中包含了这个功能,所以您可以快速开发,而无需处理配置生产服务器(如Apache),
直到你准备上线。
注意:此服务器仅供开发时使用。
现在服务器正在运行,请使用浏览器访问http://127.0.0.1:8000/,你将看懂一个"Welcom to Django"的页面。如下图所示:

更改默认端口
默认情况下,runserver命令在内部IP的8000端口启动开发服务器。
如果需要改变服务器的端口,把要使用的端口作为一个命令行参数传递给它,示例:在端口8080上启动服务器:
python3 manage.py runserver
如果需要改变服务器的IP地址,把IP地址和端口号防盗一起,例如:要监听服务器上所有IP地址:
python3 manage.py runserver :
0时0.0.0.0的快捷方式。
runserver自动重载
开发服务器会根据需要自动重新载入Python代码。不必为了使更改的代码生效而重启服务器,然而,一些行为:比如添加文件,不会出发服务器的重启,所以在这种情况下需要手动重启服务器。
创建一个应用程序
一个项目已经建立起来了。在编写每个Django应用都是遵循特定约定且包含一个Python包。Django自带一个工具,它可以自动生成应用的基本目录结构。
应用与项目的区别
项目与应用之间有什么不同?应用是一个Web应用程序,它完成具体的事项--比如一个博客系统、一个存储公共档案的数据库或者一个简单的投票应用。一个项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。
要创建您的应用程序,请确保您位于相同的目录中manage.py、并输入以下命令:
python3 manage.py startapp polls
这将创建一个目录polls,其目录结构如下:
polls/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py directory, files
polls应用将基于这个目录结构。
我们来写第一个视图,打开文件pools/views.py,并在其中写入以下代码:
from django.http import HttpResponse def index(request):
return HttpResponse("Hello,world.You're at the polls index.")
要调用视图,我们需要将其映射到URL,因此需要一个url的配置文件。要在polls目录中创建url配置文件,创建一个名为urls.py。现在app(pools)目录下结构如下所示:
polls/
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py directory, files
在polls/urls.py文件中写入以下代码:
from django.conf.urls import url
from . import views urlpatterns = [
url(r'^$',views.index,name='index'),
]
下一步是将根url.py指向polls.url模块,在mysite/urls.py中,添加对django.conf.url.include的导入,并在urlpatterns列表中插入一个include(),结果如下:
from django.conf.urls import url,include
from django.contrib import admin urlpatterns = [
url(r'pools/',include('polls.urls')),
url(r'^admin/', admin.site.urls),
]
include()方法允许引用其它URLconfs。注意:include()函数的正则表达式不具有$(字符串结束的匹配字符),而是使用尾部斜线进行表示。每当Django遇到include()时,它会排除
与此相同的任何部分,并将剩余的字符串发送到随附的URLconf进行进一步处理。
当你项目中包含其它URL模式时,应始终使用include()。admin.site.urls是唯一的例外。
何时使用include()
运行以下命令启动服务:
python3 manage.py runserver
在浏览器中访问http://127.0.0.1:8000/polls/

url()函数传递四个参数
两个必须的参数:正则表达式regex和视图view,两个可选项:kwargs和name。
url()argument:regex
正则表达式,它是用于匹配字符串中的模式的语法,或者在这种情况下是url模式。Django从第一个正则表达式开始,并将其放在列表中,将请求的URL与每个正则表达式进行比较,直到找到匹配的一个。
请注意,这些正则表达式不搜索GET和POST参数或域名。例如,在https://www.example.com/myapp/的请求中,URLconf将查找myapp/。在https://www.example.com/myapp/?page=3的请求中,URLconf同样查找myapp/。
url()argument:view
当Django发现正则表达式匹配时,Django将调用指定的视图函数,使用HttpRequest对象作为第一个参数,并将正则表达式中的任何“捕获”值作为其它参数。如果正则表达式使用简单的捕获,则值作为位置参数传递;如果它使用命名捕获,则值作为关键字参数传递。
url()argument:kwargs
任意关键字参数可以在字典汇总传递到目标视图
url()argument:name
命名你的URL可让你从Django其它地方明确地应用它,特别是在模版中。
第一个Django应用程序_part1的更多相关文章
- 第一个Django应用程序_part2
一.数据库配置 此文延续第一个Django应用程序_part1. 打开mystic/settings.py.这是一个普通的Python模块,其模块变量表示Django配置 默认情况下,配置使用SQLi ...
- 搭建你的第一个Django应用程序
首先你要确保你机器上面安装了python:Python开发_python的安装 python的相关学习资料:http://www.cnblogs.com/hongten/tag/python/ 其次, ...
- Django教程:第一个Django应用程序(4)
Django教程:第一个Django应用程序(4) 2013-10-09 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
- Django教程:第一个Django应用程序(3)
Django教程:第一个Django应用程序(3) 2013-10-08 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 37391319 #博客: ...
- 第一个Django应用程序_part3
一.概述 此文延续第一个Django应用程序part2. 官方文档:https://docs.djangoproject.com/en/1.11/intro/tutorial03/ view是Djan ...
- 编写你的第一个django应用程序2
从1停止的地方开始,我们将设置数据库,创建您的第一个模型,并快速介绍django自动生成的管理站点 数据库设置 现在,打开mysite/settings.py.这是一个普通的python模块,其中模块 ...
- 编写你的第一个django应用程序4
本教程上接教程3,我们将继续开发网页投票应用,本部分将主要关注简单的表单处理以及如何对代码进行优化 写一个简单的表单 让我们更新一下在上一个教程中编写的投票详细页面的模板(‘polls/detail. ...
- 编写你的第一个django应用程序3
这一篇从教程第2部分结尾的地方继续讲起.我们将继续编写投票应用,并且专注于如何创建公用界面--也被称为视图 概况 django视图概念是一类具有相同功能和末班的网页的集合,比如,在一个博客应用中,你可 ...
- Pycharm+Django搭建第一个Python Web程序
1.安装django 无论是Python2.x还是Python3.x版本,都可以使用pip来安装Django.在控制台使用如下命令:pip install django 如: 2.检查dgango是否 ...
随机推荐
- 一篇文章学LINQ(原创)
本篇文章主要介绍linq的基本用法,采用sql和linq比较的方式由浅入深进行学习, 注意:此文章是根据真实表来进行案例说明,表结构如下: 表1: Student(学生表) ...
- fileupload页面跳转找不到原页面的解决方法
做了个上传图片的功能,之前做的全都对,完全可以实现,但是后来再弄的时候,只要FileUpload控件里面有字(选择了图片),再按button.它尽然不执行button1_click事件,直接页面跳转, ...
- jmetr _MD5加密_获取签名
要达到的目的: app每个请求里面 请求头都带有一个 sign 的参数, 他的值是通过 开发自己设计的拼接方式 再通过md5加密生成 我们就是要生成这个sign的值出来 准备: 和开发要到签名组成公式 ...
- sorl基本原理
索引原理 场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到“坑爹”二字为止.这种搜索 ...
- 杂项:SpagoBI
ylbtech-杂项:SpagoBI SpagoBI是一个商业智能平台,为商业智能项目提供了一个完整开源的解决方案.它涵盖了一个BI系统所有方面的功能包括:数据挖掘.查询.分析.报告.Dashboar ...
- pyc是什么
python是解释型语言,需要解释器对程序逐行做出解释,然后直接运行. C语言是编译型语言,PC不需要翻译,直接执行就可以了. java也是解释型语言,不过速度可以跟编译型媲美. 用java举例,ja ...
- Win10怎么以管理员身份运行CMD命令提示符
[方法一] 我们可以在Windows10系统的开始菜单上,单击鼠标右键,这时候出现的菜单中,我们选择命令提示符(管理员)点击打开这样即可. 2 这样打开以后,大家可以看到命令提示符界面中显示管理员:命 ...
- read/write/fsync与fread/fwrite/fflush的关系和区别
read/write/fsync: 1. linux底层操作: 2. 内核调用, 涉及到进程上下文的切换,即用户态到核心态的转换,这是个比较消耗性能的操作. fread/fwrite/fflush: ...
- 5月3日上课笔记-XML解析
一.XML编程 1.xml编程的两种解析方式 1.1 dom解析 优点:一次加载,多次使用.可以方便的对xml文档进行增删改查 缺点:如果xml文档过大的话,加载的时候会比较占用内存空间比较大,消耗资 ...
- 我编辑的JAVA日历程序
class calendar { public static void main(String[]args) { int yearIn ; yearIn = Integer.parseInt(args ...