django web開發指南 (參照)

環境:win10x64 

已經安裝python2.7,django1.8 已經配置環境變量等

django-admin.exe startproject test5

cd test5

創建應用 python manage.py startapp blog

進入mysite目錄修改settings.py文件,加入應用

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

設計模型models.py

from django.db import models

# Create your models here.
class BlogPost(models.Model):
	title = models.CharField(max_langth=150)
	body = models.TextField()
	timestamp = models.DateTimeField()

設置數據庫:settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'test5',                      
        'USER': 'root',                       
        'PASSWORD': '',                   
        'HOST': '127.0.0.1',                           
        'PORT': '3306',
    }
}

同步數據庫:

python manage.py makemigrations blog
python manage.py migrate

創建管理員:

python manage.py createsuperuser

修改models.py

from django.db import models
from django.contrib import admin
...
admin.site.register(BlogPost)

運行看到如圖OK

wKioL1adnt6z7UpIAAE3mtB5B-4384.jpg

進入blog 的add添加點東西吧

然後修改admin.py:

from django.contrib import admin
from .models import *
class BlogPostAdmin(admin.ModelAdmin):
	list_display = ('title','timestamp')
admin.site.register(BlogPost,BlogPostAdmin)

這樣在看裏面的內容就可以顯示出字段內容來了


添加html文件:應用下templates\archive.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>Document</title>
</head>
<body>
{%for post in posts%}
	<h2>`post`.`title`</h2>
	<p>`post`.`timestamp`</p>
	<p>`post`.`body`</p>
{%endfor%}
</body>
</html>

修改視圖:views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader,Context
from .models import *
# Create your views here.
def archive(req):
	posts = BlogPost.objects.all()
	t = loader.get_template('archive.html')
	c= Context({'posts':posts})
	return HttpResponse(t.render(c))

修改urls.py

from django.conf.urls import include, url
from django.contrib import admin
from blog.views import *
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$',archive),
]

模板:base.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>index</title>
<style>
	body{color: #efd;background: #453;padding: - 5em;margin: 0}
	h1{padding: 2em 1em;background:#675;}
	h2{color: #bf8;}
	p{padding: 1em 0;}
</style>
</head>
<body>
	<h1>mysite.xxx.com</h1>
	{%block content%}
	{%endblock%}
</body>
</html>

archive.html

{% extends 'base.html' %}
{%block content%}
	{%for post in posts%}
		<h2>`post`.`title`</h2>
		<p>{{post.timestamp|date:"Y年m月d日"}}</p>
		<p>`post`.`body`</p>
	{%endfor%}
{%endblock%}

豐富變量模型

修改models.py

#coding=utf-8
from django.db import models
from django.contrib import admin
class BlogPost(models.Model):
	title = models.CharField(max_length=150)
	body = models.TextField()
	timestamp = models.DateTimeField()
	class Meta:
		ordering = ('-timestamp',)
		
class Author(models.Model):
	name = models.CharField(max_length=100)

class Book(models.Model):
	title = models.CharField(max_length=100)
	author = models.ManyToManyField(Author)
	class Meta:
		abstract = True  #指明book是一個抽象類
	def __unicode__(self):
		return self.title

class SmithBook(models.Model):
	author = models.ManyToManyField(Author,limit_choices_to={'name_endswith':'Shith'})

class Person(models.Model):
	first = models.CharField(max_length=100)
	last = models.CharField(max_length=100)
	middle = models.CharField(max_length=100,blank=True)
	class Meta:
		ordering = ['last','first','middle']
		unique_together = ['last','first','middle']
		verbose_name_plural = 'people'


.。。以後繼續更新 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章