django 笔记

经常使用到django的东西,或者相关的笔记,版本为v1.5

1 查看版本号

import django
print django.VERSION

2 查看manage.py的功能

python manage.py help

3 关于view.py

对于view.py的命名是没有要求的,这个其实之前就应该猜到了,只是一直没有去尝试这个东西

4 返回http响应

(1) HttpResponse("Hello world")

引入的包: from django.http import HttpResponse


5 url的配置使用

urls.py在会在不同应用中出现,同时,原始里面也有urls.py,所以,需要进行对之配置。

假设工程名为ProDj,应用名为AppDj,那么,ProDj的urls.py的使用情况是

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

urlpatterns=patterns('',
   url(r'^AppDj/',include('AppDj.urls')),
   #往下继续添加,类似
)

        注意的是,内容中的第一个AppDj是网络前缀,是用来表示网页请求的,例如http://127.0.0.1:8000/AppDj。而第二个则是转向应用目录AppDj下的urls.py

  AppDj下的目录是应该的

from django.conf.urls import patterns,url
from AppDj import views
urlpatterns=patterns('',
    url(r'^$',views.func1,name"f1"),
    #以下继续添加,注意使用的方法是正则表达式
),


6 设置时区

在settings.py 找到TIME_ZONE,设置为亚洲上海

TIME_ZONE='Asia/Shanghai'

7 模板的使用

表示变量: {{ aVar }}

表示语句:

for语句

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

if语句:

{% if aVar %}
<p> print some thing</p>
{% else %}
<p> print others </p>
{% endif %}

filter语句(这个还不知道怎么用):

{{ ship_date|date:"F j,Y"}}

访问模板变量的对象成员:

from django.template import Template,Context
person={'name':'Sally','age':'43'}
t=Template('{{ person.name}} is {{ person.age }} years old')
c=Context({'person':person})
t.render(c)

模板变量的方法调用:

注意1 :不要传递任何参数,除了self

注意2:如果异常里面没有属性silent_variable_failure,那么异常引发时会被传播

注意3:如果不希望模板调用这个方法,需要在原来类的这个方法中调用设置alters_data=True

def delete(self):
delete.alters_data=True

处理无效变量:

如果变量无效,模板会将其表示为空字符串

导入模板,然后渲染

from django import template,Context
t=template.Template('/path/to/file')
c=template.Context({'key1':'str','key2':2})
t.render(c)

注意,render函数返回的是一个unicode对象。在Django框架中,会一直使用Unicode对象而不是普通的字符串。这个非常好。。。。对于同一模板调用Template一次,多次使用render就够了,而不要多次使用Template,那样会造成资源的浪费


8 设置环境变量 

DJANGO_SETTINGS_MOUDLE,这个变量可以从manage.py里面看到

9 模板路径设置

在工程ProDj目录下,新建目录Template;

在Settings.py中设置

TEMPLATE_DIRS=(

'/path/to/ProDj/Template',

)

在Template中,新建目录AppDj

在views.py中

from django.template.loader import get_template 
from django.template import Context 
from django.http import HttpResponse 
t=get_template("AppDj/you_html_file")
c=Context({"key":"value"})
t.render(c)

10 一次性加载模板并渲染:

from django.shortcuts import render_to_response
render_to_response('html_file.html',{"key1":"value1","key2":"value2"})

如果不使用第二个参数,将使用一个空字典


11 将所有变量加载到字典:使用locals(),它对所有的局部变量的名称与值进行映射

key="value"
render_to_response('html_file',locals())


12 include模板标签

 { % include 'AppDj/your_html_file' %}

13 模板继承 block

基础模板 base.html

内容:


<html>
<head>
<title>{% block title % }{% endblock % }</title>
</head>
<body> 
<h1>example </h1>
{% block content %} {% endblock %}
{% block  footer %}
<hr>
<p>something footer</p>
{% endblock %}
</body>
</html>

继承模板 current.html

{% extends "base.html" %}
{% block title %} the current title { %endblock% }
{%block content%} 
<p>something {{ somevalue }}</p>
{% endblock %}

模板中没有修改footer的内容,所以使用父模板的内容


14 MVC模式

Model表示数据存取层

View 代表的是系统中选择显示什么和怎么显示

Controller指的是系统根据用户的输入请求决定访问模型和视图

15 使用数据库

--使用非sqlite3数据库

安装好需要的数据库

配置settings.py中的DATABASE_ENGINE的内容,根据提示即可

安装相应的适配器引擎,mysql对应python-MySQLdb,其他的对应去找


16 添加应用

python manage startapp AppDj

在settings.py添加中找到INSTALLED_APP,添加

'AppDj'

之后根据url的配置使用进行使用


17 使用模型

  在AppDj目录下的models.py中,

from django.db import models
class A(models.Model):
    charf=models.CharFiled(max_length=10)
    urlf=models.URLField()
    emailf=models.EmailField()
    datef=models.DateField()

使用python manage.py syncdb 


18 使用管理员账户

 在ProDj目录的settings.py中,在INSTALLED_APP中将admin里面相关的注释取消掉

 在ProDj目录的settings.py中,在MIDDLEWARE_CLASS中添加 'django.middleware.locale.LocaleMiddleware',

 python manage.py syncdb

 在ProDj目录的urls.py中,将和admin相关的注释掉

19 将模块添加到管理站点中

在AppDj中新建文件admin.py

from django.contrib import admin
from models import A,B
admin.site.register(A)
admin.site.register(B)
其中A,B为models中定义的类

20 查看http的头部

  request.path:除了域名之外的请求路径

  request.get_host() 域名

  request.get_full_path()全部路径

  request.is_secure() 是否使用https

  request.META 一个字典 ,包含所有本次http请求的Header信息。键值: HTTP_REFERER进站前的链接,HTTP_USER_AGENT用户的浏览器的user_agent字符串,REMOTE_ADDR客户端IP,如果是经过代理,则以逗号隔开,"123.123.123.123,124.124.124.124"


21 使用cookie

     读取cookie

     request.COOKIES 是一个COOKIE对象,可以从中读取内容

     写cookie

     使用HttpResponse的set_cookie方法,

     

def setcookie(request):
    if 'key' in request.GET:
        response=HttpResonse(request.GET('key'))
        response.set_cookie('key',request.GET('key'))
    else:
        response=HttpResonse('you dont have a cookie')
    return response

22 使用session
   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值