天天看點

Django 教程Books

MVC:models.py views.py urls.py books.html

# models.py (the database tables)

from django.db import models

class Book(models.Model):

    name = models.CharField(max_length=50)

    pub_date = models.DateField()

# views.py (the business logic)

from django.shortcuts import render_to_response

from models import Book

def latest_books(request):

    book_list = Book.objects.order_by('-pub_date')[:10]

    return render_to_response('latest_books.html', {'book_list': book_list})

# urls.py (the URL configuration)

from django.conf.urls.defaults import *

import views

urlpatterns = patterns('',

    (r'^latest/$', views.latest_books),

)

# latest_books.html (the template)

Books

{% for book in book_list %}

{{ book.name }}

{% endfor %}

django.contrib

運作 python manage.py syncdb 。這一步将生成管理界面使用的額外資料庫表。 當你把'django.contrib.auth'加進INSTALLED_APPS後,第一次運作syncdb指令時, 系統會請你建立一個超級使用者。 如果你不這麼作,你需要運作python manage.py createsuperuser來另外建立一個admin的使用者帳号,否則你将不能登入admin (提醒一句: 隻有當INSTALLED_APPS包含'django.contrib.auth'時,python manage.py createsuperuser這個指令才可用.)

将自己的模型加入預設DB

from django.contrib import admin

from mysite.books.models import Publisher, Author, Book

admin.site.register(Publisher)

admin.site.register(Author)

admin.site.register(Book)

model

    title = models.CharField(max_length=100)

    authors = models.ManyToManyField(Author)

    publisher = models.ForeignKey(Publisher)

    publication_date = models.DateField()

    def __unicode__(self):

        return self.title

model允許預設值:

class Author(models.Model):

    first_name = models.CharField(max_length=30)

    last_name = models.CharField(max_length=40)

    email = models.EmailField(**blank=True** )

    publication_date = models.DateField(**blank=True, null=True** )

修改model上顯示的标簽:verbose_name

    email = models.EmailField(blank=True, **verbose_name='e-mail'** )

自定義清單:

    email = models.EmailField(blank=True, verbose_name='e-mail')

    **def __unicode__(self):**

        **return u'%s %s' % (self.first_name, self.last_name)**