Django学习笔记(3)

Django是典型的MVC框架,它的View须要templates来支持。用一句话能够总结出Django开发:html

Getting data from the database according to a parameter passed in the URL, loading a template and returning the rendered template.sql

接下来看一下怎么在Django中配置模板。django

templates配置

在polls同级目录新建文件夹templates,在templates下新建admin文件夹。将Django自带文件django/contrib/admin/templatesadmin/base_site.html拷到此目录下。文件结构以下:浏览器

├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── polls
│   ├── admin.py
│   ├── admin.pyc
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0001_initial.pyc
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── tests.py
│   ├── views.py
│   └── views.pyc
└── templates
    └── admin
        └── base_site.html

settings配置

在mysite/setting中添加框架

TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

指明模板路径。函数

templates内容

{% extends "admin/base.html" %}

{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}

这些{% %}模板语言最终会被转换为HTML页面。url

接下来是在polls/views中增长更多的函数,一个函数对应于浏览器中的一个url的功能。code

urls.py

首先须要在polls下新建文件配置文件urls.pysqlite

from django.conf.urls import patterns, url
from . import views


urlpatterns = patterns('',
    # ex: /polls
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<question_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results
    url(r'^(?P<question_id>\d+/result/$)', views.result, name='result'),
    )

而后在mysite下修改配置文件 mysite/urls.py,包含进来polls应用的配置文件htm

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^polls/', include('polls.urls')),
)

views.py

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    return HttpResponse("titus, huang")


def result(request, question_id):
    response = "You are looking at the results of question %s."
    return HttpResponse(response % question_id)


def detail(request, question_id):
    return HttpResponse("You are looking at question %s." % question_id)

views.py中增长resultdetail函数。

在浏览器中输入

http://127.0.0.1:8000/polls/6/

http://127.0.0.1:8000/polls/6/result/

便可看到对应的响应。

相关文章
相关标签/搜索