锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 榪欐槸鍥犱負(fù)榪欐槸絎竴嬈℃墽琛宻yncdb鍛戒護(hù)錛岄櫎浜?jiǎn)film涔嬪錛宻ettings.py涓殑INSTALLED_APPS鍒楄〃涓湁璁稿榛樿搴旂敤錛岀涓嬈℃墽琛屾暟鎹簱鍚屾鏃朵細(xì)鐢熸垚瀹冧滑錛岃緭鍏es錛屽垱寤篴dmin搴旂敤鐨勮處鍙蜂俊鎭俛dmin鏄竴涓郴緇熻嚜鍔ㄧ敓鎴愮殑鏈夌敤鐨勭鐞嗗伐鍏楓傚寘鎷簡(jiǎn)澶ч儴鍒嗗父瑙佺殑鍚庡彴綆$悊鍔熻兘錛岄潪甯稿疄鐢ㄣ?br> 濡傛灉娌¢敊鐨勮瘽錛屾暟鎹〃灝卞緩濂戒簡(jiǎn)銆傚彲浠ュ埌MySQL涓嬮獙璇侊細(xì)
1銆佷慨鏀箄rls錛屽鍔犲垎欏墊樉紺哄弬鏁?br>
(r'^film/list/?$', 'django.views.generic.list_detail.object_list',
dict(paginate_by=5, **info_dict)),
2銆佷慨鏀規(guī)ā鏉匡紝鍔犱笂鍒嗛〉鏄劇ず銆傞渶瑕佹敞鎰忎笂涓欏點(diǎn)佷笅涓欏電殑url鐨勮璁°?br>
<h1 id="title">褰辯墖鍒楄〃</h1>
<hr>
<table border="0" width="500">
<tr align="right">
<td>
{% if has_previous %}
<a href="/film/list?page={{ previous }}">涓婁竴欏?/span></a>
{% endif %} {% if has_next %}
<a href="/film/list?page={{ next }}">涓嬩竴欏?/span></a>
{% endif %}
</td>
</tr>
</table>
<table border="1" width="500">
<tr>
<th>鐗囧悕</th>
<th>婕斿憳</th>
<th>鍙戣鍟?/span></th>
<th>鍙戣鏃ユ湡</th>
<th>綆浠?/span></th>
</tr>
{% for film in object_list %}
<tr>
<td>{{ film.title }}</td>
<td>
{% for actor in film.actors.all %}
{{ actor }}<br>
{% endfor %}
</td>
<td>{{ film.publisher }}</td>
<td>{{ film.pub_date }}</td>
<td>{{ film.intro }}</td>
</tr>
{% endfor %}
</table>
3銆佸畬鎴愶紝嫻嬭瘯銆?
]]>
#coding=utf8
from django.db import models
# 婕斿憳
class Actor(models.Model):
name = models.CharField('濮撳悕', max_length=50)
birthday = models.DateField('鐢熸棩')
def __unicode__(self):
return self.name
# 鍙戣鍟?/span>
class Publisher(models.Model):
name = models.CharField('鍙戣鍟?/span>', max_length=30)
def __unicode__(self):
return self.name
# 褰辯墖
class Film(models.Model):
title = models.CharField('鐗囧悕', max_length=100)
actors = models.ManyToManyField(Actor, verbose_name='婕斿憳')
pub_date = models.DateField('鍙戣鏃ユ湡')
publisher = models.ForeignKey(Publisher, verbose_name='鍙戣鍟?/span>')
intro = models.TextField('浠嬬粛', null=True)
def __unicode__(self):
return self.title
from django.contrib import admin
admin.site.register((Actor, Publisher, Film))
璦褰掓浼狅紝涓嬮潰涓篺ilm澧炲姞鏄劇ず鎵鏈夊獎(jiǎng)鐗囧姛鑳姐?br>1銆侀鍏堬紝璁懼畾url錛屽湪urls.py涓鍔犲涓嬪唴瀹癸細(xì)
from mysite.film.models import Film
info_dict = {
'queryset': Film.objects.all(),
}
urlpatterns = patterns('',
(r'^film/list/$', 'django.views.generic.list_detail.object_list', info_dict),
)
2銆佺幇鍦ㄨ鏄嬌鐢ㄦā鏉跨殑鏃跺欎簡(jiǎn)銆傚湪settiings閲岄潰璁劇疆妯℃澘瀛樻斁璺緞
TEMPLATE_DIRS = (
'./templates',
)
3銆佸湪mysite涓嬪垱寤簍emplates鐩綍錛岀劧鍚庡湪templates涓嬪垱寤篺ilm鐩綍錛屽湪film涓嬪垱寤烘ā鏉匡紝鍚嶄負(fù)film_list.html銆傝妯℃澘鐨勫懡鍚嶆柟寮忓繀欏諱負(fù)model_name_list.html錛宮odel_name灝辨槸瑕佹樉紺虹殑model鐨勫悕瀛椼?br>
<h1 id="title">褰辯墖鍒楄〃</h1>
<hr>
<table border="1">
<tr>
<th>鐗囧悕</th>
<th>婕斿憳</th>
<th>鍙戣鍟?/span></th>
<th>鍙戣鏃ユ湡</th>
<th>綆浠?/span></th>
</tr>
{% for film in object_list %}
<tr>
<td>{{ film.title }}</td>
<td>{{ film.actors }}</td>
<td>{{ film.publisher }}</td>
<td>{{ film.pub_date }}</td>
<td>{{ film.intro }}</td>
</tr>
{% endfor %}
</table>
鍙互鐪嬪嚭錛孌jango閲岄潰鐨勬ā鏉垮叾瀹炰篃鏄痟tml錛屽彧涓嶈繃澧炲姞浜?jiǎn)Django鑷畾涔夌殑鏍囩鑰屽凡銆備袱涓ぇ鎷彿涓棿鐨勬槸鍙橀噺錛屽ぇ鎷彿鍔犵櫨鍒嗗彿涓棿鐨勬槸Django妯℃澘鏍囩銆傝緇嗚娉曞彲鍙傝?a >http://docs.djangoproject.com/en/dev/topics/templates
4銆佽繘鍏?a >http://127.0.0.1:8000/film/list/鏌ョ湅鏁堟灉銆傝嫢鍑虹幇UnicodeDecodeError錛岃鏄庢ā鏉跨紪鐮佷笉姝g‘錛屼嬌鐢‥ditPlus鎴朥ltraEdit灝唂ilm_list.html鍙﹀瓨涓簎tf8緙栫爜鏍煎紡銆?br>
5銆佹祴璇曞悗鍙戠幇錛?#8220;婕斿憳”榪欎竴鍒椾腑鏄劇ず鐨勬槸<django.db.models.fields.related.ManyRelatedManager object at 0x01791B30> 絳夌瓑涓鍫嗕笉鐭ユ墍璋撶殑鍐呭銆傚師鍥犳槸妯℃澘涓殑{{film.actors}}鏄竴涓狹anyToMany綾誨瀷鐨勫煙錛屾槸鐢卞涓猘ctor瀵硅薄緇勬垚錛屽洜姝わ紝灝嗘ā鏉夸慨鏀瑰涓嬶細(xì)
<h1 id="title">褰辯墖鍒楄〃</h1>
<hr>
<table border="1">
<tr>
<th>鐗囧悕</th>
<th>婕斿憳</th>
<th>鍙戣鍟?/span></th>
<th>鍙戣鏃ユ湡</th>
<th>綆浠?/span></th>
</tr>
{% for film in object_list %}
<tr>
<td>{{ film.title }}</td>
<td>
{% for actor in film.actors.all %}
{{ actor }}<br>
{% endfor %}
</td>
<td>{{ film.publisher }}</td>
<td>{{ film.pub_date }}</td>
<td>{{ film.intro }}</td>
</tr>
{% endfor %}
</table>
鍐嶆嫻嬭瘯錛屽彂鐜版弧瓚抽鎯蟲晥鏋?:-)
]]>
from django.contrib import admin
admin.site.register((Actor, Publisher, Film))
2銆佷慨鏀箂ettings.py錛屽皢admin鍔犲叆鍒?span style="COLOR: #000000">INSTALLED_APPS 鍒楄〃涓細(xì)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'mysite.film',
)
TemplateSyntaxError at /admin/
Caught an exception while rendering: (1146, "Table 'mysite.django_admin_log' doesn't exist")
3銆佷慨鏀筸ysite/urls.py錛屽皢 (r'^admin/(.*)', admin.site.root),涓琛岀殑娉ㄩ噴鍘繪帀銆傚茍瀵煎叆admin
urls.py灝辨槸璐熻矗灝唘rl杞寲涓哄view璋冪敤鐨勬槧灝勬枃浠訛紝鍏舵牸寮忔槸錛坲rl錛寁iew錛夊銆備竴鑸瑄rl閮戒嬌鐢ㄦ鍒欒〃杈懼紡銆?br>
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
)
4銆佺櫥褰?a >http://127.0.0.1:8000/admin鍗沖彲瀵圭幇鏈夋暟鎹〃榪涜綆$悊銆?br>
5銆佺晫闈㈡槸鑻辨枃錛屾湁鐐瑰皬涓嶇埥銆備慨鏀箂ettiings.py錛岀劧鍚庡埛鏂般傚棷錛屽彉鎴愪腑鏂囦簡(jiǎn)銆?br>
TIME_ZONE = 'CCT'
LANGUAGE_CODE = 'zh-CN'
6銆佺櫥褰曪紝璇曡瘯澧炲姞鏂癆ctor錛屽彂鐜頒粈涔坒irst name錛宭ast name鐨勶紝涓嶇埥銆傛敼models
class Actor(models.Model):
first_name = models.CharField('鍚?/span>', max_length=30)
last_name = models.CharField('濮?/span>', max_length=30)
birthday = models.DateField('鐢熸棩')
class Film(models.Model):
title = models.CharField('鐗囧悕', max_length=100)
actors = models.ManyToManyField(Actor錛寁erbose_name='婕斿憳')
pub_date = models.DateField('鍙戣鏃ユ湡')
publisher = models.ForeignKey(Publisher錛寁erbose_name='鍙戣鍟?/span>')
7銆侀噸鏂板埛鏂幫紝鍙戣鍏ㄩ儴鍙樻垚涓枃浜?jiǎn)銆傛坊鍔犲嚑涓紨鍛樿瘯璇曘?-)
8銆佹坊鍔犲畬鎴愶紝榪斿洖婕斿憳鍒楄〃錛屽彂鐜幫紝婕斿憳鍒楄〃鍏ㄦ槸Actor Object…………
榪欐槸鍥犱負(fù)錛孌jango鍙槸鍒楀嚭浜?jiǎn)鎵浠ョ殑Actor錛屽洜涓哄畠浠叏鏄璞★紝鎵浠ュ氨鏄劇ずActor Object銆備絾榪欓噷錛屾垜浠兂鏄劇ず鐨勬槸婕斿憳鐨勫悕瀛楋紝Python鍐呯疆鐨刜_str__鏂規(guī)硶姝eソ瀹屾垚榪欎竴鍔熻兘銆備絾__str__榪斿洖鐨勬槸ascii緙栫爜錛岃繖閲岀殑婕斿憳鍚嶅瓧鐢ㄥ埌浜?jiǎn)涓枃锛屽洜姝_str__涓嶈兘婊¤凍闇瑕侊紝搴旇浣跨敤__unicode__榪斿洖unicode緙栫爜錛?br>
#coding=utf8
from django.db import models
# 婕斿憳
class Actor(models.Model):
first_name = models.CharField('鍚?/span>', max_length=30)
last_name = models.CharField('濮?/span>', max_length=30)
birthday = models.DateField('鐢熸棩')
def __unicode__(self):
return self.last_name+self.first_name
# 鍙戣鍟?/span>
class Publisher(models.Model):
name = models.CharField('鍙戣鍟?/span>', max_length=30)
def __unicode__(self):
return self.name
# 褰辯墖
class Film(models.Model):
title = models.CharField('鐗囧悕', max_length=100)
actors = models.ManyToManyField(Actor, verbose_name='婕斿憳')
pub_date = models.DateField('鍙戣鏃ユ湡')
publisher = models.ForeignKey(Publisher, verbose_name='鍙戣鍟?/span>')
def __unicode__(self):
return self.title
from django.contrib import admin
admin.site.register((Actor, Publisher, Film))
榪欐槸models.py鏈鍚庣殑瀹屾暣浠g爜銆傚埛鏂頒竴涓媋dmin錛岀湅鐪嬶紝鍚嶅瓧鏄笉鏄樉紺哄嚭鏉ヤ簡(jiǎn)錛?:-)
]]>
涓嬮潰錛屼負(fù)film搴旂敤鍒涘緩鏁版嵁琛細(xì)
1銆佹墦寮film鐩綍涓嬮潰鐨刴odels.py鏂囦歡
2銆佷功鍐檉ilm搴旂敤浣跨敤鍒扮殑鏁版嵁綾?br>
from django.db import models
# 婕斿憳
class Actor(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
birthday = models.DateField()
# 鍙戣鍟?/span>
class Publisher(models.Model):
name = models.CharField(max_length=30)
# 褰辯墖
class Film(models.Model):
title = models.CharField(max_length=100)
actors = models.ManyToManyField(Actor)
pub_date = models.DateField()
publisher = models.ForeignKey(Publisher)
D:\mycode\mysite>python manage.py syncdb
SyntaxError: Non-ASCII character '\xe6' in file D:\mycode\mysite\..\mysite\film\models.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
#coding=utf8
D:\mycode\mysite>python manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table film_actor
Creating table film_publisher
Creating table film_film
You just installed Django's auth system, which means you don't have any superuse
rs defined.
Would you like to create one now? (yes/no):
mysql> use film;
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_film |
+----------------------------+
| auth_group |
| auth_group_permissions |
| auth_message |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_content_type |
| django_session |
| django_site |
| film_actor |
| film_film |
| film_film_actors |
| film_publisher |
+----------------------------+
14 rows in set (0.00 sec)
mysql>
]]>
2銆佸湪http://sourceforge.net/projects/mysql-python涓嬭澆Python鐨凪ySQL搴擄紝騫跺畨瑁呫?br>3銆佽繘鍏ySQL鍛戒護(hù)琛岋紝寤虹珛涓涓悕涓篺ilm鐨勬柊鏁版嵁搴?br>
mysql> create database film;
DATABASE_ENGINE = 'mysql' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'film' # Or path to database file if using sqlite3.
DATABASE_USER = 'root' # Not used with sqlite3.
DATABASE_PASSWORD = '123456' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
]]>
D:\mycode>cd mysite
D:\mycode\mysite>python manage.py startapp filmINSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'mysite.film',# 鏂板搴旂敤
)
film搴旂敤鍒涘緩瀹屾瘯銆?
]]>
3銆佽繍琛宒jango-admin.py startproject mysite錛屽緩绔嬪悕涓簃ysite鐨勯」鐩?/p>
娉ㄦ剰錛氳紜繚mycode鐩綍涓嬪皻鏈瓨鍦ㄥ悕涓簃ysite鐨勭洰褰?br>4銆佽繘鍏ysite鐩綍錛屽紑鍚湇鍔″櫒
琛ㄦ槑欏圭洰鍒涘緩鎴愬姛銆?/p>