Django笔记(一) 文档 命令 url等
2017-02-02 本文已影响39人
今夕何夕_walker
文档
中文1.8 :
http://python.usyiyi.cn/django/index.html
英文1.10:
https://docs.djangoproject.com/en/1.10/
setting:
https://docs.djangoproject.com/en/1.9/ref/settings/#databases
基本命令
创建项目
django-admin.py startproject mysite
创建app
python manage.py startapp books
添加app到setting后运行命令
python manage.py makemigrations appname
使用现有的数据库
python manage.py inspectdb
django会根据配置的数据库中的表生成models语句
python manage.py inspectdb > models.py
查看模型对应的sql语句
python manage.py sqlmigrate appname
install the core Django tables
python manage.py migrate
启动
python manage.py runserver
更改运行端口
python manage.py runserver 8080
局域网访问
python manage.py runserver 0.0.0.0:8080
视图 The view layer
url配置
url传递参数给视图
命名正则表达式组的语法是(?P<name>pattern)
,其中name
是组的名称,pattern
是匹配模式。
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]
# /articles/2005/03/ 请求将调用views.month_archive(request, year='2005', month='03')函数,而不是views.month_archive(request, '2005', '03')。
指定视图参数默认值
# URLconf
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^blog/$', views.page),
url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
]
# View (in blog/views.py)
def page(request, num="1"):
# Output the appropriate page of blog entries, according to num.
...
在上面的例子中,两个URL模式指向同一个视图views.page —— 但是第一个模式不会从URL 中捕获任何值。如果第一个模式匹配,page() 函数将使用num参数的默认值"1"。如果第二个模式匹配,page() 将使用正则表达式捕获的num 值。
获取url的querystring和设置默认值
#一般方法
if 'date' in request.GET:
date = request.GET['date']
else:
date = '2010-05-04'
#简写方法
data = request.GET.get('data','2010-05-04')
批量301 302
# 302
from django import http
def view(request):
return http.HttpResponseRedirect('http://example.cn/')
#301
from django import http
def view(request):
return http.HttpResponsePermanentRedirect('http://example.cn/')