首页 > 其他 > 详细

Django学习笔记(一)

时间:2014-02-20 18:53:33      阅读:414      评论:0      收藏:0      [点我收藏+]

1.安装Django,网站下载Django,https://www.djangoproject.com/download/,解压到python安装目录,用CMD进入django目录,输入 python setup.py install

2.创建Django本地项目,将C:\Python27\Lib\site-packages\django\bin加入环境变量,新建一个文件夹DjangoDemo(命名可以随便的),CMD进入新建文件夹, 输入

django-admin.py startproject mysite  即新建了一个Django 项目

3.Django文件架构:

bubuko.com,布布扣

setting文件用于项目的参数设置,例如debug,urls用于声明url对应的函数,views用于储存urls中url对应的函数,__init__.py一般为空,不需要修改。

cmd中输入

>python manage.py runserver

运行服务器

4.urls文件说明

bubuko.com,布布扣
from django.conf.urls import patterns, include, url

from django.contrib import admin
#admin.autodiscover()  这句不知道有什么用
import views

urlpatterns = patterns(‘‘,

    (r‘^$‘, views.hello), (r‘^%, views.hello1), (r‘^$‘, views.hello1 )) #当访问http://127.0.0.1:8000/hello是程序会运行views里面的hello函数,‘hello’是一个正则表达式
bubuko.com,布布扣

一个重点,正则表达式字符串的开头字母“r”。 它告诉Python这是个原始字符串,不需要处理里面的反斜杠(转义字符)。 在普通Python字符串中,反斜杠用于特殊字符的转义。比如n转义成一个换行符。 当你用r把它标示为一个原始字符串后,Python不再视其中的反斜杠为转义字符。也就是说,“n”是两个字符串:“”和“n”。由于反斜杠在Python代码和正则表达式中有冲突,因此建议你在Python定义正则表达式时都使用原始字符串。 从现在开始,本文所有URL模式都用原始字符串

5.views文件说明

from django.http import HttpResponse

def hello(request):
       return HttpResponse("hello world")
def hello1(request):
    return HttpResponse("hello world1")

函数必须有一个参数request,可以通过这个类访问http请求相关的数据,例如参数,路径等

 

6.从url中提取数据

#urls.py中的代码

(r^num/(\d+)$, printNum),

#views.py中的代码 def printNum(request,num):
    return HttpResponse("hello i am %s"%num)

效果为访问http://127.0.0.1:8000/num/252   会返回hello i am 252

正则表达式中可以通过()来提取数据,(r^num/(\d+)$, printNum),会提取括号里面的数据作为printNum中的一个参数,所以printNum有两个参数

7.模板

需要在setting.py文件中添加模板路径

 

TEMPLATE_DIRS = (  
    ./mysite/t/,
)#.代表manage.py所在的目录

views.py中的代码为:

 

def hello(request):
    return render_to_response(hello.html, {list1:[1,2,5,4]})

html:

 

bubuko.com,布布扣
<html>
    <body>
        hello world
        {%for i in list1%}
        {{i}}
        {%endfor%}
    </body>
</html>
bubuko.com,布布扣

 

一个网上的html代码demo:

bubuko.com,布布扣
<html>
<head><title>Ordering notice</title></head>

<body>

<h1>Ordering notice</h1>

<p>Dear {{ person_name }},</p>

<p>Thanks for placing an order from {{ company }}. It‘s scheduled to
ship on {{ ship_date|date:"F j, Y" }}.</p>

<p>Here are the items you‘ve ordered:</p>

<ul>
{% for item in item_list %}
    <li>{{ item }}</li>
{% endfor %}
</ul>

{% if ordered_warranty %}
    <p>Your warranty information will be included in the packaging.</p>
{% else %}
    <p>You didn‘t order a warranty, so you‘re on your own when
    the products inevitably stop working.</p>
{% endif %}

<p>Sincerely,<br />{{ company }}</p>

</body>
</html>
bubuko.com,布布扣

 

Python 的“真值”

在Python和Django模板系统中,以下这些对象相当于布尔值的False 

  • 空列表([] 空元组(() ) 空字典({} ) 空字符串(‘‘ ) 零值(0 ) 特殊对象None 对象False(很明显)

  • 提示:你也可以在自定义的对象里定义他们的布尔值属性(这个是python的高级用法)。

除以上几点以外的所有东西都视为`` True``

 

模板继承

一般网站中的html都有一般分时固定的,例如导航栏,导入相应css,js文件等,django中可以用模板继承来实现

先新建一个基础模板base.html

bubuko.com,布布扣
<html>
    <body>
        hello world
        {%block content%} {%endblock%}
        hello world
        {%block time%} {%endblock%}
    </body>
</html>
bubuko.com,布布扣

再建一个子模板child1.html:

{% extends "base.html"%}
{% block content%}i am content from child1{%endblock%}        
{% block time%}  i am time from child2{%endblock%}
    

views中的函数:

def hello1(request):
    return render_to_response(child1.html )

这样返回的结果为:

<html><head></head><body>
    hello world
    i am content from child1
    hello world
    i am time from child2
</body></html>

 8.表单

属性/方法 说明 举例
request.path 除域名以外的请求路径,以正斜杠开头 "/hello/"
request.get_host() 主机名(比如,通常所说的域名) "127.0.0.1:8000" or "www.example.com"
request.get_full_path() 请求路径,可能包含查询字符串 "/hello/?print=true"
request.is_secure() 如果通过HTTPS访问,则此方法返回True, 否则返回False True 或者 False

HTTP_REFERER,进站前链接网页,如果有的话。 (请注意,它是REFERRER的笔误。)

HTTP_USER_AGENT,用户浏览器的user-agent字符串,如果有的话。 例如: "Mozilla/5.0 (X11; U; Linux i686; fr-FR; rv:1.8.1.17) Gecko/20080829 Firefox/2.0.0.17" .

REMOTE_ADDR 客户端IP,如:"12.345.67.89" 。(如果申请是经过代理服务器的话,那么它可能是以逗号分割的多个IP地址,如:"12.345.67.89,23.456.78.90" 。)

除了基本的元数据,HttpRequest对象还有两个属性包含了用户所提交的信息: request.GET 和 request.POST。二者都是类字典对象,可以通过它们来访问GET和POST数据。

 

9.回话与认证

cookies

request.COOKIES

response.set_cookie("mycookies", "eeee")

session

request.session["fav_color"] = "blue"   设置SESSION

fav_color = request.session["fav_color"]  获取SESSION

del request.session["fav_color"]   删除SESSION

def setsession(request):
    request.session["name"]="kevin"
    return HttpResponse("done")
def getsession(request):
    name=request.session["name"]
    return HttpResponse(name)

 

 参考资料:http://djangobook.py3k.cn/2.0/chapter05/

Django学习笔记(一)

原文:http://www.cnblogs.com/Xjng/p/3556931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!