Django 入门篇一

寒假时间想再考研之前再最后锻炼一下项目的水平,想用Django来开发个人博客,放弃了之前考虑的Java开发,主要是用Java开发一个轻量级的博客大材小用。最后决定用flask或者Django来完成这个小项目,每天记录一下项目进展。


今天是开发Django的第一天,前期做过爬虫之类的项目,轻车熟路。

强烈推荐这个教程http://djangobook.py3k.cn/2.0/,这个有点过时,但是绝对不影响学习使用。

安装的时候注意,如果你用的python2.7或者以下的,使用pip安装django的时候,绝对会报错,最新版的django不支持py2,如果使用pip安装,要记得指明版本号,比如我在安装的时候,pip install Django==1.11.0,这样才能安装成功。

django-admin.py startproject HelloWorld     #创建第一个django项目,名字为HelloWorld
HelloWorld:                              #项目的容器。
manage.py:                          # 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
HelloWorld/__init__.py:         #一个空文件,告诉 Python 该目录是一个 Python 包。
HelloWorld/settings.py:             #该 Django 项目的设置/配置。
HelloWorld/urls.py:             #该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
HelloWorld/wsgi.py:             # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
在项目的容器下面创建一个views.py的视图管理文件views.py
#views.py
from django.http import HttpResponse
import datetime

def hello(request):
    return HttpResponse("hello django")

def getnow(request):
    now = datetime.datetime.now()
    html = "<h1>today is %s</h1>"%now
    return HttpResponse(html)

#urls.py

from django.conf.urls import url
from django.contrib import admin
import views

urlpatterns = [
    url(r'^hello/$', views.hello),
    url(r'^getnow/$',views.getnow),
]

只要在浏览器访问/hello就会自动调用views.hello这个函数,也就是views.py里面的视图函数。


Django模板库
>>> from django.template import Context, Template
>>> t = Template('My name is {{ name }}.')
>>> c = Context({'name': 'Stephane'})
>>> t.render(c)
u'My name is Stephane.'

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    t = get_template('current_datetime.html')
    html = t.render(Context({'current_date': now}))
    return HttpResponse(html)

此范例中,我们使用了函数 django.template.loader.get_template() ,而不是手动从文件系统加载模板。 该 get_template() 函数以模板名称为参数,在文件系统中找出模块的位置,打开文件并返回一个编译好的 Template 对象。比如,你的 TEMPLATE_DIRS目录设置为 ‘/home/django/mysite/templates’,上面的 get_template()调用就会为你找到 /home/django/mysite/templates/current_datetime.html 这样一个位置。

#上面的代码可以简化成这样子
from django.shortcuts import render_to_response
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})

我们已经告诉你如何载入一个模板文件,然后用 Context渲染它,最后返回这个处理好的HttpResponse对象给用户。 我们已经优化了方案,使用 get_template() 方法代替繁杂的用代码来处理模板及其路径的工作。我们不再需要导入 get_template 、 Template 、 Context 和 HttpResponse 。render_to_response() 的第一个参数必须是要使用的模板名称。 如果要给定第二个参数,那么该参数必须是为该模板创建 Context 时所使用的字典。 如果不提供第二个参数, render_to_response() 使用一个空字典。

在讲解了模板加载机制之后,我们再介绍一个利用该机制的内建模板标签: {% include %} 。该标签允许在(模板中)包含其它的模板的内容。 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复。{% include 'nav.html' %}


模板继承问题

http://djangobook.py3k.cn/2.0/chapter04/ 直接翻到最下面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值