sudo pip install Django
django-admin startproject XXX
進入主目錄下html
python manage.py runserver 0.0.0.0:8000
HelloWorld: 文件夾,項目的容器。python
manage.py: 一個實用的命令行工具,可以讓你以各類方式與該 Django 項目進行交互。正則表達式
HelloWorld/__init__.py: 一個空文件,告訴 Python 該目錄是一個 Python 包。django
HelloWorld/settings.py: 該 Django 項目的設置/配置。服務器
HelloWorld/urls.py: 該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站"目錄"。app
HelloWorld/wsgi.py: 一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目。函數
解決就很簡單:工具
尋找佔用端口的進程測試
ps -aux | grep -i "manage.py"
殺死網站
kill -9 3101
修改settings.py
ALLOWED_HOSTS = ['*']
而後再runserver就能夠在0.0.0.0:8000看到
#新建一個view.py from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ") #而後修改urls.py,綁定view裏的hello函數與url from django.conf.urls import url from . import view urlpatterns = [ url(r'^$', view.hello), ] #直接刷新0.0.0.0.8000便可看到結果 # url(regex, view[, kwargs, name]) # regex是正則表達式,與之匹配會執行view,kwargs是視圖使用的字典類型# 的參數,name用來反向獲取url
在settings.py裏修改模板的路徑
TEMPLATES裏'DIRS'改成[BASE_DIR+"/templates",], 並在主目錄下創建文件夾templates,在裏面放上hello.html,其內容是
<h1>{{ hello }}</h1>
此處變量用雙大括號標註。
修改view.py爲
from django.shortcuts import render def hello(request): context = {} context['hello'] = 'Hello World!' return render(request, 'hello.html', context)
這樣,templates放的是網頁模板,裏面用到的是view.py裏定義的變量,所以實現了模板和數據的分離。
if支持嵌套,condition也接受and/or/not
{% if condition1 %} ... display 1 {% elif condition2 %} ... display 2 {% else %} ... display 3 {% endif %}
for支持嵌套
必須說。。這個在寫select單選框的時候我有用過,很省力:)
{% for athlete in athlete_list %} <h1>{{ athlete.name }}</h1> <ul> {% for sport in athlete.sports_played %} <li>{{ sport }}</li> {% endfor %} </ul> {% endfor %}
反向迭代
{% for athlete in athlete_list reversed %}
還有ifnotequal
{% ifequal section 'sitenews' %} <h1>Site News</h1> {% else %} <h1>No News Here</h1> {% endifequal %}
{# 這是一個註釋 #}
{% include %} 標籤容許在模板中包含其它的模板的內容。
過濾器能夠在變量被顯示前修改它,能夠使用管道字符|套接
{{ name|lower }} {#將name變量轉換爲小寫#}
{{ my_list|first|upper }} {#將第一個元素轉換爲大寫#}
{{ bio|truncatewords:"30" }} {#顯示bio變量的前30個字符#}
length {#返回變量長度#}
addslashes {#添加反斜槓到任何反斜槓、單引號或者雙引號前面。#}
{{ pub_date|date:"F j, Y" }} {#按指定的格式字符串參數格式化date或datetime對象#}
模板能夠繼承。新建base.html,block部分是能夠被繼承和替換的。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ProbeDesignTest</title> </head> <body> <h1>Hello World!</h1> <p>testing……</p> {% block mainbody %} <p>original</p> {% endblock %} </body> </html>
修改hello.html,首先聲明父模板,而後在與base.html同名的block中修改內容。
{%extends "base.html" %} {% block mainbody %} <p>繼承了 base.html 文件</p> {% endblock %}
在根目錄下建立app
django-admin startapp app
而後註冊這個應用,在INSTALLED_APPS中添加一行
'app.apps.AppConfig',
查看urls.py
url映射經過urlpatterns管理,url()函數要麼將URL式樣(URL pattern)關聯到特定視圖(specific view),將在模式匹配時顯示;
要麼關聯到某個URL式樣列表的測試代碼。 (第二種狀況下,URL式樣是目標模型裏的「base URL」)
更改成
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ] urlpatterns += [ url('', include('app.urls')), ]
# path函數已經不能用了,注意。
中文註釋的話,開頭要加
# -*- coding: UTF-8 -*-
在probeD文件夾下新建urls.py
from django.conf.urls import url from . import views urlpatterns = [ ]