一.修改article/forms.py的内容如下
from django import forms
from models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model=Article
fields=('title','body','pub_date')
二.修改article/urls.py
from django.conf.urls import patterns,include,url
urlpatterns = patterns('',
url(r'^all/$','article.views.articles'),
url(r'^get/(?P<article_id>\d+)/$','article.views.article'),
url(r'^language/(?P<language>[a-z\-]+)/$','article.views.language'),
url(r'^create/$','article.views.create'),
)
三.修改article/views.py内容如下
from django.http import HttpResponse
from django.shortcuts import render_to_response
from article.models import Article
from forms import ArticleForm
from django.http import HttpResponseRedirect
from django.core.context_processors import csrf
def hello(request):
name ="Mike"
html =" <html> <body> Hi %s,this seems to have worked! </body> </html> " % name
return HttpResponse(html)
def hello_template_simple(request):
name ="Mike"
return render_to_response('hello.html',{'name':name})
def articles(request):
language ='en-gb'
session_language ='en-gb'
if 'lang' in request.COOKIES:
language = request.COOKIES['lang']
if 'lang' in request.session:
session_language =request.session['lang']
return render_to_response('articles.html',
{'articles':Article.objects.all(),'language':language,'session_language':session_language})
def article(request,article_id=1):
return render_to_response('article.html',
{'article':Article.objects.get(id=article_id)})
def language(request,language='en-gb'):
response =HttpResponse("setting language to %s" % language)
response.set_cookie('lang',language)
request.session['lang']=language
return response
def create(request):
if request.POST:
form=ArticleForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/articles/all')
else:
form=ArticleForm()
args={}
args.update(csrf(request))
args['form']=form
return render_to_response('create_article.html',args)
四.修改article/templates/create_article.html的内容如下
form 可以使用as_p() as_ul() as_table()这些方法
{% extends "base.html" %}
{% block sidebar %}
<ul>
<li><a href="/articles/all">Cancel</a></li>
</ul>
{% endblock %}
{% block content %}
<form action="/articles/create/" method="post">{% csrf_token %}
<ul> {{ form.as_ul}} </ul>
<input type="submit" name="submit" value="Create Article">
</form>
{% endblock %}
五.修改article/templates/articles.html的内容如下
{% extends "base.html" %}
{% block sidebar %}
<ul>
<li><a href="/articles/all">Articles</a></li>
<li><a href="/articles/create">Create Article</a></li>
</ul>
{% endblock %}
{% block content %}
<h2>Language is :{{ language }}</h2>
<h2>Session Language is : {{ session_language }}</h2>
{% if articles.count > 0 %}
{% for article in articles %}
<div>
<h2><a href="/articles/get/{{ article.id }}/">{{ article.title }}</a></h2>
<p> {{ article.body|lower|truncatewords:"10" }}</p>
</div>
{% endfor %}
{% else %}
<p>None to show!</p>
{% endif %}
{% endblock %}
最终效果如图