writing your first Django app,part 1
创建项目
略过安装过程,通过下面的命令行语句创建django项目,名称为mysite的文件夹。
note:需要避免项目名称和python或django内建对象重名
$ django-admin startproject mysite
让我们看看文件夹的框架:
mysite/
manage.py
mysite/
__init__.py
setting.py
urls.py
wsgi.py
- manage.py: 一个命令行工具,让你能与django项目交互。更多manage.py细节在django-admin.
- mysite/wsgi.py: 一个WSGI兼容服务器的入口。更多细节请看How to deploy with WSGI
接下来我们看项目是否能正常运行,进入文件夹然后输入以下命令:
$python manage.py runserver
修改端口
可以在runserver后面跟上以下代码来修改端口。
$python manage.py runserver 8080
如果你想修改服务器的ip,可以把它和端口放在一起,这样就能让其他机器访问了。(特别是在你想向其他机器炫耀你的杰作!)
python manage.py runserver 0.0.0.0:8000
更多关于服务器开发的文档请见runserver
创建app
Django提供了一个方便的工具用来生成基本的app目录结构,让你更专注于编写代码而不是创造目录。
app是指Web application可以实现一些功能,比如博客系统,一个简单的投票app。projects是指集合配置与app的特定的网站。一个project可以包含很多app,app也可以放在不同的project中使用.
确认你与manage.py处于同一个目录下,然后输入以下命令来创建一个app:
$python manage.py startapp polls
写你的首个view
打开polls/views.py文件,在里面写入下面的代码:
polls/views.py:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index. ")
我们需要映射view到一个URL,在polls文件夹建立一个urls.py文件,在urls.py里面写入以下代码:
polls/urls.py:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',views.index,name='index'),
]
下一步是在根目录的URL设置里引用polls.urls模块,在mysite/urls.py增加引用django.conf.urls.include,把include()插入到urlpatterns列表里面:
mysite/urls.py:
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()函数允许引用其它的URL设置。记住这里的正则表达式不包含$(代表匹配结束),’/polls/’后面的URL应该在polls/urls.py里面。
你应该总是使用include(),除了唯一的例外:admin.site.urls
运行服务器然后进入http://localhost:8000/polls/,你将见到你定义的index view。
url()函数可传入4个参数,其中2个为必须:regex 和 view,2个可选参数:kwargs,name
url() 参数:regex
‘regex’通常是指正则表达式,在这里用来匹配url样式。
记住这里的正则不会搜索GET和POST参数,或者域名。比如,对一个对https://www.example.com/myapp/的请求,URLconf会去寻找myapp/。在一个对https://www.example.com/myapp/?page=3的请求,URLconf也会去找myapp/。
如果想知道更多正则表达式,推荐去看Wikipedia’s entry和标准库re的文档。
url() 参数:view
当Django发现一个正则表达式匹配,Django会调用特定的view函数,并且把HttpRequest作为第一个参数,从正则表达式捕获的其它值作为其它参数传入view函数。
url() 参数:kwargs
任意的关键字参数可以当作一个字典传给目标view。在这个Django tutorial里不会使用这个参数。
url() 参数:name
命名你的URL让你不会把它和Django的其它URL搞混。