django是一個大而全的web框架,css
理論上咱們須要用 web框架作這幾件事:html
1 創建服務端,等待並接收請求python
2識別不一樣請求,返回不一樣結果web
3發送動態網頁sql
而這三件事django集成在一塊兒了。數據庫
環境,已經裝好python的編譯環境,django也安裝好了django
若是沒有安裝:session
1,pip install --django==版本號。或pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.10app
2,安裝完畢,在cmd中輸入django-admin框架
2.1,若是djaogo-admin有效則能夠正常建立django項目
2.2,若是安裝正常也沒法運行django-admin,多是window下環境變量沒有加入路徑,
django-admin應該在python解釋器的同目錄下的Scripts下,將其加入目錄
1、建立django程序
其餘經常使用命令:
python manage.py runserver 0.0.0.0
python manage.py startapp appname
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
2、程序目錄於文件的做用:
setting.py 文件
TEMPLATE_DIRS
=
(
os.path.join(BASE_DIR,
'templates'
),
) #這一行代碼指定了html文件放置的路徑
STATICFILES_DIRS
=
(
os.path.join(BASE_DIR,
'static'
),
) #這一行代碼指定了css,js文件放置的路徑
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.staticfiles'
'appfirst.apps.AppfirstConfig' ] #安裝的app應該在這裏註冊
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}#有關運用集成組件連接數據庫的配置
一、單一路由對應
1
|
url(r
'^index$'
, views.index),
|
二、基於正則的路由
1
2
|
url(r
'^index/(\d*)'
, views.index),
url(r
'^manage/(?P<name>\w*)/(?P<id>\d*)'
, views.manage),
|
三、添加額外的參數
1
|
url(r
'^manage/(?P<name>\w*)'
, views.manage,{
'id'
:
333
}),
|
四、爲路由映射設置名稱
1
2
|
url(r
'^home'
, views.home, name
=
'h1'
),
url(r
'^index/(\d*)'
, views.index, name
=
'h2'
),
|
設置名稱以後,能夠在不一樣的地方調用,如:
class NewType(models.Model): caption = models.CharField(max_length=16) def get_absolute_url(self): """ 爲每一個對象生成一個URL 應用:在對象列表中生成查看詳細的URL,使用此方法便可!!! :return: """ # return '/%s/%s' % (self._meta.db_table, self.id) # 或 from django.urls import reverse return reverse('NewType.Detail', kwargs={'nid': self.id})
獲取請求匹配成功的URL信息:request.resolver_match
五、根據app對路由規則進行分類
導入include
1
|
url(r
'^web/'
,include(
'web.urls'
)),
|
六、命名空間
a. project.urls.py
1
2
3
4
5
6
|
from
django.conf.urls
import
url,include
urlpatterns
=
[
url(r
'^a/'
, include(
'app01.urls'
, namespace
=
'author-polls'
)),
url(r
'^b/'
, include(
'app01.urls'
, namespace
=
'publisher-polls'
)),
]
|
b. app01.urls.py
1
2
3
4
5
6
7
|
from
django.conf.urls
import
url
from
app01
import
views
app_name
=
'app01'
urlpatterns
=
[
url(r
'^(?P<pk>\d+)/$'
, views.detail, name
=
'detail'
)
]
|
c. app01.views.py
1
2
3
|
def
detail(request, pk):
print
(request.resolver_match)
return
HttpResponse(pk)
|
以上定義帶命名空間的url以後,使用name生成URL時候,應該以下:
django中的路由系統和其餘語言的框架有所不一樣,在django中每個請求的url都要有一條路由映射,這樣才能將請求交給對一個的view中的函數去處理。其餘大部分的Web框架則是對一類的url請求作一條路由映射,從而是路由系統變得簡潔。
更詳細的說明參照中文手冊:http://docs.30c.org/djangobook2/chapter04/index.html
所謂動態的發送,是指根據預設的方式,在發送的時候修改已經寫好的html文件以達成任務。
1 模版的執行
----如何調用和封裝模板數據,在views函數中
def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
>>> from django import template
>>> t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c) My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c) My name is Fred. import datetime from django import template import DjangoDemo.settings now = datetime.datetime.now() fp = open(settings.BASE_DIR+'/templates/Home/Index.html') t = template.Template(fp.read()) fp.close() html = t.render(template.Context({'current_date': now})) return HttpResponse(html) from django.template.loader import get_template from django.template import Context from django.http import HttpResponse import datetime def current_datetime(request): now = datetime.datetime.now() t = get_template('current_datetime.html') html = t.render(Context({'current_date': now})) return HttpResponse(html) return render_to_response('Account/Login.html',data,context_instance=RequestContext(request))
2,模板語言
模板中也有本身的語言,該語言可使用後臺定義好的數據,自有的條件判斷,自定義函數,內置函數,特有的其餘html文件引入功能