python django day18

基本配置

一、创建Django程序

创建project终端命令:

project:
		django-admin startproject mysite
		cd mysite
		python manage.py startapp app01

 

1、路由系统

普通关系:
        /index/ ->函数
        ...
        #其他框架有 反射:
            /(\w+)/(\w+)
            /home/index/
            =>导入:home模块,getattr(index) fun()

    动态关系:
        /index/(\w+)\    -> 函数(参数)
    路由分发:
    /index/ -> app.url文件[/index/(\w+)\    -> 函数(参数,]

每个路由规则对应一个view中的函数

url(r‘^detail/(\d+)/‘, views.detail),
url(r‘^detail2/(\d+)/(\d+)/‘, views.detail2),
url(r‘^detail3/(?P<p1>\d+)/(?P<x2>\d+)/‘, views.detail3),

根据app对路由规则进行一次分类

url(r‘^web/‘,include(‘app01.urls‘)),

2、模版

2、模版

    a. 模版渲染的过程

    b. {{ k1 }} --> 索引是.

    c.  {% for item in k2 %}
            <p>{{ item }},{{ forloop.counter }},{{ forloop.counter0 }},{{ forloop.first }},{{ forloop.last }},{{ forloop.revcounter }}</p>
        {% endfor %}

    d. 模版语言的内置方法

    e. 自定义方法
        filter
        simple_tag

        1、创建指定文件,名称不能改 templatetags
        2、创建任意 .py 文件,如:xx.py

            from django import template
            from django.utils.safestring import mark_safe
            from django.template.base import resolve_variable, Node, TemplateSyntaxError
            # 必须不变
            register = template.Library()

            # 创建函数
            @register.filter
            def f1(value):
                return value + "666"
        3、在html模版的头部执行

            {% load xx %}

        4、
            k1 = ‘VVV‘
            {{k1}}    => vvv
            {{k1|f1}} => vvv666

        5、 settings.py 中注册app

        总结:
            filter
                限制:传参
                支持:模版语言的 if 条件
            simple_tag
                不支持:模版语言的 if 条件

    f. 模版的继承
        母板: 

                balabala...

                {% block 名称 %} {% endblock %}

                balabala...

        子板:
                {% extends ‘母板html文件名‘ %}

                {% block 名称 %} 

                    具体子页面的内容...

                {% endblock %}

    g. include

        小组件: x.html

        {% include ‘x.html‘ %}

模板语言基本操作

views.py

def template(request):
    return render(request,
                  ‘template.html‘,
                  {‘k1‘:‘VVV‘,‘k2‘:[11,22,33,],‘k3‘:{‘nid‘:12,‘name‘:‘alex‘}})

template.html

    {{ k1 }}
    {{ k2.1 }}       //取列表中的第二个,索引用.
    {{ k3.name }}

for循环中使用的

    {% for item in k2 %}
        <p>{{ item }},{{ forloop.counter }},{{ forloop.counter0 }},{{ forloop.first }},{{ forloop.last }}</p>
    {% endfor%}
//结果
11,1,0,True,False

22,2,1,False,False

33,3,2,False,True

if

{% if k1 == ‘v1‘ %}
        <h1>V1</h1>
{% elif k1 == ‘v2‘ %}
        <h1>777</h1>
{% endif %}

3、自定义simple_tag

a、在app中创建templatetags模块

b、创建任意 .py 文件,如:xx.py

#先导入
from django import template
from django.utils.safestring import mark_safe
from django.template.base import resolve_variable, Node, TemplateSyntaxError
# register这个名称必须不能变
register = template.Library()

# 创建函数
@register.filter
def f1(value):
    return value + "666"

3、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名

{% load xx %}

xx.py

from django import template

register = template.Library()

@register.filter
def f3(value):
    return value + "666"

使用filter

{% if k1|f3 %}  //把k1传给自定义的f3
        <h1>True</h1>
{% else %}
        <h1>False</h1>
{% endif %}

传两个参数(最多只能传两个参数)

@register.filter
def f3(value,arg):
    return value + "666" + arg

使用filter

{{ k1|f3:"QL" }}

xx.py

@register.simple_tag
def f1(s1,s2,s3,s4):
    return s1 + s2 + s3 + s4

使用simple_tag

 {% f1 1 2 3 4 %} //1代表第一个参数,2代表第二个参数、、、

4、

 k1 = ‘VVV‘ {{k1}} => vvv {{k1|f1}} => vv

5、在settings中配置当前app,不然django无法找到自定义的simple_tag 

总结:

filter

  限制:传参

  支持:模版语言的 if 条件

simple_tag

  不支持:模版语言的 if 条件

模版的继承

母板:

{% block 名称 %} {% endblock %}

子板:

{% extends ‘母板html文件名‘ %}

{% block 名称 %} 

具体子页面的内容...

{% endblock %}
include

		小组件: x.html

		{% include ‘x.html‘ %}

ajax

function SubmitForm() {
            $.ajax({
                url:‘/web/ajax_demo/‘,
                type:‘POST‘,
                data:{‘user‘:$(‘#username‘).val(),‘pwd‘:$(‘#pwd‘).val()},
                dataType:‘json‘,
                success:function (data) {
                    if(data.status){
                        location.href = "http://www.baidu.com";
                    }else{
                        alert(data.message);
                    }
                }
            });
        }
时间: 2024-10-07 11:45:14

python django day18的相关文章

用python+django+twistd 开发一个属于自己的运维系统

开源的运维系统不少,比如nagios.zabbix.cati等等,但是遇到自己个性化的运维需求的时候,总是显的力不从心!最近在学习python,所以就考虑用python+django+twisted来定做一个完全个性化的运维系统. 运维系统有几个主要的功能:监控.分析.报警.更甚者直接根据分析的结果进行反应操作.而以上几点通过上述的框架可以比较容易的实现. 下面上图说明: 使用freemind整理了下思路: 下面是一些代码段,完整的代码下载见文档底部: Server: #!/usr/bin/en

python+django 更改了urls.py 之后runserver报错的解决办法

新手学python+django时,更改了urls.py 为: from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover() urlpatterns = patterns('',    # Examples:    # url(r'^$', 'mysite.views.home', name='home'),    # url(r'^blog/', i

一、Python Django的安装

   一.Python Django的安装 一.Django的安装 # wget https://www.djangoproject.com/m/releases/1.3/Django-1.3.7.tar.gz --no-check-certificate # tar -zxvf Django-1.3.7.tar.gz # cd Django-1.3.7 # python setup.py install # python Python 2.6.6 (r266:84292, Nov 22 201

微信开发python+django两个月的成功经历,django是个好框架!

时间:大三 上学期没有用微信内置浏览器而纯对话开发,坑了自己好一下. 下学期选错bottle框架,以为轻量好,谁知开发中什么都自己来很痛苦. 选对了框架django,终于在大三最后的个把月里写出了里程碑式的现在这个微信端,自己都感动到,作为我大三一年web开发的终结吧. 亮点1:自带后台管理 亮点2:后台权限管理 亮点3:微信回复规则设置去代码化,图形界面. 亮点4:一平台多网店 技巧:微信规则不匹配时不能回复吗?不是,规则包含空字符总能匹配任意文本,请看下面的微信规则截图. 后台 选择botl

python Django注册页面显示头像

python Django注册页面显示头像(views) def register(request): ''' 注册 :param request: :return: ''' if request.method=='GET': obj = Register(request) return render(request, 'register.html', {'obj': obj}) else: obj = Register(request,request.POST,request.FILES) i

Python+Django+js+echarts引入本地js文件的操作方法

1. 选择正确的echarts.js,开发版选择echarts.baidu.com上的源码版,避免出现问题 2. 在项目主目录中新建static文件夹,里面建立js.css.images文件夹 3. 在settings文件中新增如下代码配置: STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATICFILES_DIRS = ( ('css', os.path.join(STATIC_ROOT, 'c

python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 注: 本节代码是基于 Django 1.8,但 Django 1.4 - Djagno 1.9 操作流程也是一样的. 后文给出示例代码可以在 Django 1.4.x 到 Django 1.9.x 上运行. 不过还是强调一点,一点要动手敲代码!不要偷懒哦,动手才能学到真东西. 1. 创建一个 zqxt_tmpl 项目,和一个 名

初识python django, 让我们一起进入python的世界吧

这几天花时间学习了一下python django,正如某人所说,掌握另外一门语言是有必要的,同样我也作出了自己的选择.从这几天的学习中,我确实也发现其他语言及其框架等确实有一种与众不同的感觉.下面我把自己这几天看到的东西稍微作了一下总结,本文并不是django的教程,而是在麦子学院参加学习之后对django的一些自己的理解,可能有些不成熟的地方,希望大家不要吝惜手中的砖头. 一 django的orm 如果有人问我喜欢django的什么,我会耗不犹豫的告诉你是django的orm,这个想法的产生完

Python+Django+SAE系列教程16-----cookie&amp;session

本章我们来讲解cookie和session ,这两个东西相信大家一定不陌生,概念就不多讲了,我们直接来看其用法,首先是cookie,我们在view中添加三个视图,一个是显示cookie的,一个是设置cookie的,如下: def show_cookie(request): if "MyTestCookie" in request.COOKIES: return HttpResponse("Cookie[MyTestCookie]的内容是: %s" % request