Django开发web站点步骤

本文详细介绍如何使用Django框架创建Web应用,包括工程与App创建、静态文件与模板配置、路由与视图设置等核心步骤,并展示了Django模板语言的使用方法。

1、创建Django工程

1
django-admin startproject 工程名


2、创建App

1
2
cd 工程名
 python manage.py startapp cmdb


3、静态文件配置

编辑 project.settings.py,追加以下内容

1
2
3
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)


4、模板路径配置

1
DIRS ==> (os.path.join(BASE_DIR, 'templates'),)


5、settings中,注释 csrf

1
2
3
MIDDLEWARE_CLASSES = (
    #'django.middleware.csrf.CsrfViewMiddleware',
)

6、定义路由规则,在url.py中定义用户访问的url由哪个函数来处理请求

1
2
url.py
    "login"  --> 函数名


7、定义视图函数,在views.py中定义函数

1
2
3
4
5
6
7
8
def func(reuest):
    # request.method GET/POST
    # http://127.0.0.1:8000/home?nid=123&name=bob
    # request.GET.get('',None)  #获取请求发来的数据
    # request.POST.get('',None)
    # return HttpResponse("字符串")
    # return Render(request, 'HTML模板路径',{"user_list": USER_LIST})
    # return redirect('只能填URL,例如:/home')


8、模板渲染

Django特殊的模板语言,例如:

--变量名取值--

在views.py中定义好变量和对应的值,在template的html页面中通过` var_name `的方式来取值

1
2
3
4
5
6
7
8
9
10
def func(request):
   return render(request,"index.html",{'current_user'"bob"})
 
index.html
 
<html>
<body>
    <div>{{ current_user }}</div>
</body>
</html>


--For循环取值--

在views.py中定义好列表和值,在template的html页面中通过{{ for循环 }}的方式来取值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def func(request):
    return render(request,"index.html",{
    'current_user'"bob",
    'user_list':['bob','aaa','bbb']})
 
index.html
<html>
<body>
    <div>{{ current_user }}</div>
    <ul>
    {% for row in user_list %}
        <li>{{ row }}</li>
    <% endfor %>
    </ul>
</body>
</html>


--索引取值--

在views.py中定义好字典和值,在template的html页面中通过` var_name`.`key `的方式来取值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def func(request):
    return render(request,"index.html",{
        'current_user'"bob"
        'user_list': ['bob','aaa','bbb'],
        'user_dict': ['k1''v1''k2''v2']
        })
         
index.html
 
<html>
<body>
    <div>{{ current_user }}</div>
    <a>{{ user_list.1 }}</a>  //对于列表直接用索引取值
    <a>{{ user_dict.k1 }}</a//对于字典,要用key取值
    <a>{{ user_dict.k2 }}</a>
</body>
</html>


--循环字典--

模板语法除了而已循环列表外,也可以循环字典,用法和python基本一样,只不过循环时,不要加括号()


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
USER_DICT = {
    'K1''V1',
    'K2''V2',
    'K3''V3',
    'K4''V4'
}
 
 
例1、循环key
{% for in USER_DICT.keys %}
    <li>{{ k }}</li>
{% endfor %}
 
 
例2、循环键值对
{% for item in USER_DICT.items %}
    <li>{{ item }}</li>
{% endfor %}
 
例3、循环values
{% for v in USER_DICT.values %}
    <li>{v }}</li>
{% endfor %}
 
例4、循环values
{% for k,v in USER_DICT.items %}
    <li>{{ k }}-{v }}</li>
{% endfor %}



--条件取值--

{% if %}

    {% if %}

    {% endif %}

    {% else%}

{% else %}

{% endif %}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def func(request):
    return render(request,"index.html",{
        'current_user'"bob"
        'age': 18,
        'user_list': ['bob','aaa','bbb'],
        'user_dict': ['k1''v1''k2''v2']
        })
         
index.html
 
<html>
<body>
 
    <div>{{ current_user }}</div>
    <a>{{ user_list.1 }}</a>  //对于列表直接用索引取值
    <a>{{ user_dict.k1 }}</a//对于字典,要用key取值
    <a>{{ user_dict.k2 }}</a>
    {% if age %}
    <a>有年龄</a>
        {% if age > 16 %}
            <a>老男人</a>
        {% else %}
            <a>小鲜肉</a>
        {% endif %}
    {% else %}
        <a>无年龄</a>
    {% endif %}
</body>
</html>


模板的工作流程:

  • 1、当用户请求通过url发送请求后,django路由将请求交给视图函数,

  • 2、然后视图函数会先去取模板,

  • 3、将模板中有` current_user `这样的变量与视图中定义的值进行渲染,渲染后将模板内容转换成字符串

  • 4、将生成后字符串整体返回给用户



过滤器

模板过滤器是变量显示前转换它们的值的方式,看起来像下面这样

1
{{ name|lower }}

这将显示通过lower过滤器过滤后` name `变量的值,它将文本转换成小写
使用(|)管道来申请一个过滤器


过滤器可以串成链,即一个过滤器的结果可以传向下一个,下面是escape文本内容然后把换行转换成p标签的习惯用法

1
{{ my_text|escape|linebreaks }}











本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1931369,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值