今天就来分享一下django的入门知识,并带领大家写出自己的第一个页面,虽然很激动,但是还是希望大家按奈住自己的心情,认真学习!
怎样开始一个django项目?
这估计是很多初学者最关心的问题,感觉自己无从下手,下面就分享一下。我们在前面已经成功安装django,如果还没安装的话,就快点安装吧!
打开shell,运行命令:django-admin.py startproject myproject 就可以开始一个名为myproject 的django项目
可以看到在当前的工作目录下出现了一个名为myproject的文件夹,其目录结构为:
manage.py 一种命令行工具,可以让你以多种方式与django项目进行交互,在shell里面输入python3.4 manage.py help 可以查看他能做什么。
__init__.py 学过python的都知道,在类里面,__init__方法是类的构造方法,在python里面,包的概念可能许多人并不清楚,在python里要求,一个文件夹要成为python的包,其目录下必须包含__init__.py文件,在这里其目的就是让python将你的项目文件夹视为一个开发包。这一般是个空的文件,并不需要去修改它。
settings.py 该项目的一些设置或者配置。
urls.py django项目的路由(url)设置,在后面会详细讲到。
wsgi.py wsgi的全称为Web Server Gateway Interface,即Web服务器网关接口,关于wsgi请点击:http://tyny.iteye.com/blog/1337600 ,而wsgi.py文件就是对其进行导入与配置
好,解释了各个文件的作用,下面来个简单的例子,来边实践,边学习django开发。
第一个django页面
在与__init__.py同级的目录下面定义一个名为view.py文件,这个文件的作用是定义页面的展示方式与内容的,文件名可以任意,但是为了达到见名知意的效果,建议使用此种文件名。view.py里面的内容如下:
#view.py
from django.http import HttpResponse #导入HttpResponse类,暂且理解为用于响应Http请求
def hello(request):
<span style="white-space:pre"> </span>return HttpResponse("Hello World") #返回helloworld
#urls.py
from django.conf.urls import url
from django.contrib import admin
#上面是原本系统有的,下面一行是自定义导入的
from myproject.view import hello #从myproject.view 里面导入hello,python里面,对于包下的文件可以通过点来代替斜杠(/),即从文件view.py里面导入hello方法
urlpatterns = [
<span style="white-space:pre"> </span>url(r'^admin/', admin.site.urls),url(r'^hello/$',hello), #python路由表,通过正则匹配,当用户访问网站根下的hello时,如www.example.com/hello 时,就返回hello函数返回的内容。
]
关于url正则匹配问题
可能许多人对上面的正则感到摸不着头脑,下面详细说明一下。^ 代表开始,则任何以hello开头的都将匹配,例: 正则是:'^hello/' 则'/hello/aaa','/hello/' 也将匹配
$ 代表结束,曾任何以hello结尾的都将匹配,例:正则是:'hello/$' 则'/aaa/hello/' '/hello/' 也将匹配
如果是:'hello',则任何包含hello的都将匹配,如:'/a/hello/','/hello/b/','/a/hello/hello/' 也将匹配
如果是:'^hello/$',则只匹配'/hello/'
下面还有更高级的正则:
符号 匹配 举例
.(英文句点) 任意一个单一字符 a,1,x,?,n,! 等
\d 任意一位数字 0-9
[A-Z] 大写A到Z中的任意一个字符 A-Z
[a-z] 小写a到z之间的任意一个字符 a-z
[A-Za-z] a-z之间的任意一个字符,忽略大小写 A-Z a-z
+ 匹配更多的字符(一个或多个) \d+匹配一个或多个数字,[A-Z]+匹配一个或多个大写英文字母
[^/]+ ^在方括号里面代表取反,匹配一个或多个不为/的字符 [^A-Z] 匹配单个不为大写字母的字符
? 匹配0个或多个之前的字符 A? 匹配0个或多个A
* 类似于通配符,匹配0或多个字符 * 匹配任意个任意字符,\d*匹配任意个数字
{1,3} 匹配重复数量,匹配1到3个之前的表达式 \d{1,3}匹配一个,两个或三个数字
怎样运行服务
前面让大家运行python3.4 manage.py help 细心的同学会发现,最下面几行中,有一行runserver 参数,这就是运行服务的所需的命令,但是还不够,需要指定地址和端口号,由于只是在本地测试,地址就是localhost或者127.0.0.1,两者是等效的,端口号的话,最好是1024以后的,由于1024以前的只能由root账户使用,所以取1024以后的任意一个就可以,运行后如下图所示
然后访问浏览器,在地址栏输入localhost:8080 就可以访问了,结果如下图:
下面开发一个时间服务,页面显示当前系统时间
代码如下:#view.py
from django.http import HttpResponse #导入HttpResponse类,暂且理解为用于响应Http请求
from time import ctime()
def time(request):
<span style="white-space:pre"> </span>return HttpResponse("<h1>Now The Time Is: %s </h1>" % ctime())
#urls.py
from django.conf.urls import url
from django.contrib import admin
from myproject.view import time
urlpatterns = [
url(r'^admin/', admin.site.urls),url(r'^time/$',time)
]
运行服务器:
python3.4 manage.py runserver localhost:8080
浏览器查看结果:
其实你是可以在一开始的时候,就将服务器打开,然后就可以动态的查看自己的开发过程,服务器会自动检测你对代码的更改情况,如果有错误也可以及时的发现。
debug状态:
如果你随便输入url,则会出现报错界面,如图:
如果代码内部有错误,如删去time函数的request参数,访问:
这次就分享到这里,希望大家多去实践,熟能生巧。