Django开发web站点步骤

简介:

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,如需转载请自行联系原作者

目录
相关文章
|
2天前
|
设计模式 开发框架 数据库
Python Web开发主要常用的框架
【5月更文挑战第12天】Python Web开发框架包括Django、Flask、Tornado和Pyramid。Django适用于复杂应用,提供ORM、模板引擎等全套功能;Flask轻量级,易于扩展,适合小型至中型项目;Tornado擅长处理高并发,支持异步和WebSockets;Pyramid灵活强大,可适配多种数据库和模板引擎,适用于各种规模项目。选择框架需依据项目需求和技术栈。
14 2
|
1天前
|
存储 前端开发 关系型数据库
105-Django开发多商户询盘上级网站-在线聊天交流通讯
该项目旨在构建一个在线询盘交易系统,采用Python的Django框架,支持SQLite3(开发)或MySQL/PostgreSQL(生产)数据库。功能包括用户注册登录、产品上传(带审核)、搜索过滤、即时通讯、超级用户管理端、数据分析和响应式界面。还将考虑使用WebSocket、Redis缓存、Docker部署和推荐算法。数据库设计涉及用户、产品、订单和聊天记录表。开发流程涵盖需求分析、技术选型、数据库设计、编码、测试和部署,同时关注安全性、性能、可维护性和兼容性。
10 2
|
1天前
|
缓存 数据挖掘 数据库
104-Django开发在线美食购物网站
美味小厨在线购物网站是基于Python和Django构建的电商平台,提供商品展示、搜索过滤、问题反馈、购物功能、商品详情查看、产品编辑添加、多用户及站点管理、订单管理等服务。采用Django框架实现高效、稳定且可扩展的系统,前后端分离以提升性能,支持数据库优化和缓存技术,注重用户数据安全。未来计划优化用户体验,拓展更多功能,并加强数据分析。
10 1
|
1天前
|
BI Python
103-Django开发投票选举系统
这是一个基于 Python 3.11 和 Django 的全功能投票选举系统,提供用户认证、首页展示、投票功能、投票内容管理、数据统计与展示、用户管理和权限分配。系统支持第三方登录、搜索过滤、投票详情查看、选项选择及统计,并具有良好的扩展性和第三方系统集成能力。适用于各种选举场景,如学校选举、公司投票或在线调查。
7 0
|
2天前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
11 3
|
3天前
|
编解码 数据库 计算机视觉
LabVIEW开发基于Web数字图像处理
LabVIEW开发基于Web数字图像处理
|
6天前
|
前端开发 JavaScript Java
Java与Web开发的结合:JSP与Servlet
Java与Web开发的结合:JSP与Servlet
10 0
|
6天前
|
存储 程序员 API
python web开发示例详解
python web开发示例详解
15 0
|
Web App开发 应用服务中间件 nginx
|
6天前
|
前端开发 UED Python
Wagtail-基于Python Django的内容管理系统CMS实现公网访问
Wagtail-基于Python Django的内容管理系统CMS实现公网访问