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
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
class Book(models.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** )
class Book(models.Model):
? ? title = models.CharField(max_length=100)
? ? authors = models.ManyToManyField(Author)
? ? publisher = models.ForeignKey(Publisher)
? ? publication_date = models.DateField(**blank=True, null=True** )
修改model上顯示的標簽:verbose_name
class Author(models.Model):
? ? first_name = models.CharField(max_length=30)
? ? last_name = models.CharField(max_length=40)
? ? email = models.EmailField(blank=True, **verbose_name='e-mail'** )
自定義列表:
class Author(models.Model):
? ? first_name = models.CharField(max_length=30)
? ? last_name = models.CharField(max_length=40)
? ? email = models.EmailField(blank=True, verbose_name='e-mail')
? ? **def __unicode__(self):**
? ? ? ? **return u'%s %s' % (self.first_name, self.last_name)**