天天看点

django redirect传递参数_Django使用

Django安装

  1. 命令(Python本地包通用):到根目录下打开cmd,键入 python setup.py install
  2. 然后是配置环境变量,将这几个目录添加到系统环境变量中: C:Python33Libsite-packagesdjango;C:Python33Scripts。 添加完成后就可以使用Django的django-admin.py命令新建工程了。
  • HelloWorld: 项目的容器。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  • HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • HelloWorld/settings.py: 该 Django 项目的设置/配置。
  • HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
  • HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

Django视图和URL松耦合(分开)

Django模板

模板是一个文本,用于分离文档的表现形式和内容。

进阶技巧:标签(if/else, for, ifequal, ifnotequal, 过滤器)、变量

>>> from django.template import Template, Context 
>>> t = Template('Hello, {{ name }}') 
>>> print t.render(Context({'name': 'John'})) 
Hello, John
           

复杂数据结构的遍历关键是句点字符(.)

  1. 字典的索引
  2. 对象的属性
  3. 对象的函数(函数名后不带圆括号,即只能调用不传参数的函数)
  4. 列表的索引

注意,上述是按顺序进行查找,存在优先级

模板继承

以上代码中,名为 mainbody 的 block 标签是可以被继承者们替换掉的部分。

所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。

hello.html 中继承 base.html,并替换特定 block

Django模型

  • M 代表模型(Model ),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
  • T 代表模板(Template) ,即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
  • V 代表视图(View) ,即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作 模型与模板之间的桥梁

sqlall命令和syncdb命令将Django语句自动生成MySQL语句

验证模型有效性:

python manage.py validate
           

完成create命令:

python manage.py sqlall books
           

或者:

python manage.py syncdb
           

基本数据访问:

python manage.py shell
           

django-admin startproject mysite_login

新建工程

python manage.py startapp 应用名

admin.py

:管理站点模型的声明文件,默认为空。

apps.py

:应用信息定义文件。在其中生成了类Appconfig,类用于定义应用名等Meta数据。

migrations

:用于在之后定义引用迁移功能。

models.py

:添加模型层数据类的文件。

test.py

:测试代码文件。

views.py

:定义URL响应函数。

django redirect传递参数_Django使用

makemigrations和migrate的区别:

python manage.py makemigrations这个命令是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件,如果你接下来还要进行改动的话可能生成就是另外一个文件不一定都是0001文件,但是这个命令并没有作用到数据库,这个刚刚我们在上面的操作过程之后已经看到了,而当我们执行python manage.py migrate 命令时 这条命令的主要作用就是把这些改动作用到数据库也就是执行migrations里面新改动的迁移文件更新数据库,比如创建数据表,或者增加字段属性。

另外一个需要注意的是这两个命令默认情况下是作用于全局,也就是对所有最新更改的models或者migrations下面的迁移文件进行对应的操作,如果要想仅仅对部分app进行作用的话 则执行如下命令:

python manage.py makemigrations appname,

python manage.py migrate appname,

如果要想精确到某一个迁移文件则可以使用:

python manage.py migrate appname 文件名

Django基础必备三神装(HttpResponse、render,、redirect)

from django.shortcuts import HttpResponse, render, redirect
           

1.HttpResponse

它是作用是内部传入一个字符串参数,然后发给浏览器。例如:

def index(request):
    # 业务逻辑代码
    return HttpResponse("OK")
           

2、render

render方法可接收三个参数,一是request参数,二是待渲染的html模板文件,三是保存具体数据的字典参数。

它的作用就是将数据填充进模板文件(模板路径不用填),最后把结果返回给浏览器。与jinja2类似。例如:

def index(request):
    # 业务逻辑代码
    return render(request, "index.html", {"name": "monicx", "hobby": ["reading", "blog"]})
           

3、redirect

接受一个URL参数,表示让浏览器跳转去指定的URL.

例如:

def index(request):
    # 业务逻辑代码
    return redirect("https://blog.csdn.net/miaoqinian")
           
{% csrf_token %}的标签

csrf全称是Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST方法提交的表格,必须有此标签。

urlpatterns有三种使用方式:

  • [path('admin/', admin.site.urls),]
  • [url(r'^$', view.hello),]
  • patterns(('^hello/$', hello),)

通配符处理动态URL

urlpatterns = patterns('',
     # ...     
(r'^time/plus/d+/$', hours_ahead),
     # ... 
)
           

d+匹配1个以上的数字。如果只允许1个或2个数字,则d{1,2}

在视图函数里用一个offset表现:

def hours_ahead(request, offset):

模板只能调用不需要参数的方法(因为模板里面不能有括号,如var.upper)

from django.template import Template, Context
t = Template('{{ var }} -- {{ var.upper }} -- {{ var.isdigit }}')
           

句点也能访问列表的索引(不能负数索引)

t = Template('Item 2 is {{ items.2 }}.')