当前位置: 代码迷 >> Web前端 >> Django 1.5.4 课题八 Model
  详细解决方案

Django 1.5.4 课题八 Model

热度:925   发布时间:2013-10-12 11:54:02.0
Django 1.5.4 专题八 Model

一.修改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 %}

最终效果如图








  相关解决方案