Contenu connexe Similaire à Learning django step 1 Similaire à Learning django step 1 (20) Learning django step 11. 30 分鐘建構
Web App
Cd Chen
http://www.cdchen.idv.tw/
2014/04/14
Learning Django Step 1
20. 建⽴立 Django Project
(postapp)cd-macmini1:postapp cdchen$ django-admin.py startproject demosite"
(postapp)cd-macmini1:postapp cdchen$ ls"
bin demosite include lib"
(postapp)cd-macmini1:postapp cdchen$ cd demosite/"
(postapp)cd-macmini1:demosite cdchen$ ls"
demosite manage.py"
(postapp)cd-macmini1:demosite cdchen$ cd demosite/"
(postapp)cd-macmini1:demosite cdchen$ ls"
__init__.py settings.py urls.py wsgi.py"
(postapp)cd-macmini1:demosite cdchen$ cd .."
(postapp)cd-macmini1:demosite cdchen$
21. Django Project 架構
‣ settings.py
‣ Django 專案的設定檔
‣ urls.py
‣ URL Mapping 定義檔
‣ wsgi.py
‣ Django WSGI Callback
23. 建⽴立 Django App
(postapp)cd-macmini1:demosite cdchen$ ls"
demosite manage.py"
(postapp)cd-macmini1:demosite cdchen$ ./manage.py startapp postapp"
(postapp)cd-macmini1:demosite cdchen$ ls"
demosite manage.py postapp"
(postapp)cd-macmini1:demosite cdchen$ ls postapp/"
__init__.py admin.py models.py tests.py views.py"
(postapp)cd-macmini1:postapp cdchen$
24. Django App 架構
‣ admin.py
‣ 定義 Django 管理主控台
‣ models.py
‣ 定義 Model
‣ tests.py
‣ 單元測試
26. 定義 Model
from django.db import models"
"
# Create your models here."
"
class Post(models.Model):"
title = models.CharField(max_length=255)"
body = models.TextField(null=True, blank=True)"
create_time = models.DateTimeField(db_index=True, auto_now_add=True)"
28. # -*- coding: utf-8 -*-"
from django.conf.urls import patterns, url"
from django.views.generic import ListView, DetailView"
from postapp.models import Post"
"
"
class PostListView(ListView):"
model = Post"
template_name = 'post/list.html'"
"
"
class PostDetailView(DetailView):"
model = Post"
template_name = 'post/detail.html'"
"
"
## 定義 URL Mapping"
urlpatterns = patterns('',"
url(r’^(?P<pk>d+)$', PostDetailView.as_view(), name='post_detail_view'),"
url(r'^$', PostListView.as_view(), name='post_list_view'),"
)"
30. post/list.html
<!DOCTYPE html>"
<html>"
<head><title>Post List Page</title></head>"
<body>"
<h1>Post List</h1>"
<ul>"
{% for object in object_list %}"
<li>"
<small>{{ object.create_time }}</small>"
<h2><a href="{% url 'post_detail_view' pk=object.pk %}">{{ object.title }}</a></h2>"
<div>{{ object.body|truncatechars:30 }}</div>"
</li>"
{% endfor %}"
</ul>"
</body>"
</html>
32. 撰寫 admin.py
from django.contrib import admin"
from postapp.models import Post"
"
"
class PostModelAdmin(admin.ModelAdmin):"
pass"
"
"
admin.site.register(Post, PostModelAdmin)"
37. urls.py
from django.conf.urls import patterns, include, url"
from django.contrib import admin"
admin.autodiscover()"
urlpatterns = patterns('',"
# Examples:"
# url(r'^$', 'demosite.views.home', name='home'),"
# url(r'^blog/', include('blog.urls')),"
url(r'^admin/', include(admin.site.urls)),"
url(r'^post/', include('postapp.views')),"
)
38. 建⽴立資料庫
‣ 預設使⽤用 SQLite 作為資料庫
‣ 可搭配使⽤用 django-south 管理 Model 欄
位
‣ Django 1.7 將直接內建
‣ 執⾏行 manage.py syncdb
39. (postapp)cd-macmini1:demosite cdchen$ ./manage.py syncdb"
Creating tables ..."
Creating table django_admin_log"
Creating table auth_permission"
Creating table auth_group_permissions"
Creating table auth_group"
Creating table auth_user_groups"
Creating table auth_user_user_permissions"
Creating table auth_user"
Creating table django_content_type"
Creating table django_session"
Creating table postapp_post"
"
You just installed Django's auth system, which means you don't have any superusers defined."
Would you like to create one now? (yes/no): yes"
Username (leave blank to use 'cdchen'): admin"
Email address: admin@localhost.cc"
Password: <PASSWORD>"
Password (again): <PASSWORD>"
Superuser created successfully."
Installing custom SQL ..."
Installing indexes ..."
Installed 0 object(s) from 0 fixture(s)"
(postapp)cd-macmini1:demosite cdchen$
41. (postapp)cd-macmini1:demosite cdchen$ ./manage.py runserver"
Validating models..."
"
0 errors found"
April 13, 2014 - 08:36:13"
Django version 1.6.2, using settings 'demosite.settings'"
Starting development server at http://127.0.0.1:8000/"
Quit the server with CONTROL-C."
46. ‣ 更複雜的 ORM 機制
‣ 熟悉 Form / Function-Based View
‣ 使⽤用 3rd-party App
‣ ⾃自定 Template Tag / Filter
‣ 開發 Reusable-App