django開發傻瓜教程-1-安裝和HelloWorld

安裝

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 服務器的入口,以便運行你的項目。函數

------------------------------DEBUG時間----------------------------------------

解決就很簡單:工具

尋找佔用端口的進程測試

ps -aux | grep -i "manage.py"

 

殺死網站

kill -9 3101

修改settings.py

ALLOWED_HOSTS = ['*']

而後再runserver就能夠在0.0.0.0:8000看到

 

喜聞樂見的HelloWorld

#新建一個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 = [
]
相關文章
相關標籤/搜索