django项目创建和启动,静态资源配置 django模板遍历数组和对象 if forloop

工程目录下,cmd:django-admin startproject 工程名(djdemo1),创建django工程。此时工程下会生动djdemo1主模块。
cmd:django-admin startapp(app1) 模块名,创建新的子模块app1。

创建模块后(假设模块名app1),在/djdemo1\settings.py的INSTALLED_APPS加上’app1’,
django就会在需要时扫描app1里的templates文件夹,查找需要的html文件。
如果不加的话,需要在TEMPLATES.DIRS里加上app1的templates的路径。比如:
TEMPLATES = [{‘DIRS’: [***
# os.path.join(BASE_DIR, “/app1/templates/”),
], ***}

cmd:python 工程目录/manage.py runserver localhost:8000开启服务器在8000端口。

引入静态资源:
在子模块下创建static/css/a.js,
在view里返回的html文件顶部加上{% load static %}(否则报错{% load static %}),
head里加上<script src="{% static 'js/111.js' %}" ></script>,即可引用该js。
文件放在其他子模块里也可访问,放在主模块里无法访问。

本文示例代码如下

//app1\views.py
from django.shortcuts import render
from django.http import HttpResponse


def hello(request):
    return HttpResponse("Hello world ! ")

# render , set parameters for response, django template
def t1(request):
    user={'name':'John','age':11,'password':'aaa'}
    products=[{'product':'苹果{}'.format(i),'price':i*10+1} for i in range(5)]
    return render(request, "t1.html",{'from':__file__,'user':user,'products':products})

# set static/css or js for html files
def t2(request):
    return render(request, "t2.html")
//app1\templates\t1.html
{%load static%}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="{% static 'js/111.js' %}"  ></script>
</head>
<body>
    t1 html from {{from}}<br>
    <div>对象取属性:{{user.password}}</div>
    <div>products[0]price的写法是:{{products.0.price}}</div>
    <h3>遍历对象:</h3>
    {%for k,v in user.items%}
        <div>{{k}}>>{{v}}</div>
    {%endfor%}
    <h3>遍历数组:</h3>
    {%for p in products%}
        <div> {{forloop}}>>{{p}}</div>
    {%endfor%}
    <h3>if else</h3>
    {%if 3 > 4 %}
        <span>case if1</span>
    {%elif 41 > 5 %}
        <span>case elif</span>
    {%else%}
        <span>case else</span>
    {%endif%}
</body>
</html>
from django.contrib import admin
from django.urls import path
import app1.views as a1v
import app2.views as a2v

urlpatterns = [
    path('admin/', admin.site.urls),

    path('a1', a1v.hello),
    path('a1/t1', a1v.t1),
    path('a1/t2', a1v.t2),

    path('a2/t1', a2v.t1),

]
t1.html输出如下:

t1 html from D:\workspace\python_vscode\djdemo1\app1\views.py
对象取属性:aaa
products[0]price的写法是:1
遍历对象:
name>>John
age>>11
password>>aaa
遍历数组:
{'parentloop': {}, 'counter0': 0, 'counter': 1, 'revcounter': 5, 'revcounter0': 4, 'first': True, 'last': False}>>{'product': '苹果0', 'price': 1}
{'parentloop': {}, 'counter0': 1, 'counter': 2, 'revcounter': 4, 'revcounter0': 3, 'first': False, 'last': False}>>{'product': '苹果1', 'price': 11}
{'parentloop': {}, 'counter0': 2, 'counter': 3, 'revcounter': 3, 'revcounter0': 2, 'first': False, 'last': False}>>{'product': '苹果2', 'price': 21}
{'parentloop': {}, 'counter0': 3, 'counter': 4, 'revcounter': 2, 'revcounter0': 1, 'first': False, 'last': False}>>{'product': '苹果3', 'price': 31}
{'parentloop': {}, 'counter0': 4, 'counter': 5, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}>>{'product': '苹果4', 'price': 41}

if elsecase elif

其他注意点

django模板遍历数组时可以从{{forloop.counter0}}对象获取index
django模板里变量和运算符号间要加空格,否则报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值