模板的简单实用

1.模板使用

模板配置

在settings.py文件配置模板所在目录

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 模版存放位置, 在根目录下,templates当中  e:\mycode\h2101A\day02
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

2.模板语句循环。分支

for 标签

语法:

{%for i in item%}
{% endfor %}
在templates中创建一个index.html页面
在views.py中写一个视图函数
from django.shortcuts import render

# Create your views here.
def index(request):
    context = {'stu_list':[{'name':'张飞','age':30},{'name':'刘备','age':40}]}
    return render(request,'index.html',context=context)
在app01下的urls配路由
from django.urls import path,include
from . import views
urlpatterns = [
    path('index/',views.index)
]

使用for循环打印出views中的stu_list
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table>
        <tr>
            <td>索引</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>编辑</td>
        </tr>
        {% for stu in stu_list %}
        <tr>
            <td>{{ forloop.counter0 }}</td>
            <td>{{ stu.name }}</td>
            <td>{{ stu.age }}</td>
            <td>
                <button>删除</button>
            </td>
        </tr>
        {% endfor %}

    </table>
</body>
</html>

// for循环中的常用用法
{{forloop.counter}}  # 取循环当中索引,从1开始
{{forloop.counter0}}  # 取循环当中索引,从0开始
{{forloop.first}}  # 判断是否为第一个
{{forloop.last}}  # 判断是否为最后一个
{{forloop.revcounter}}  # 取循环当中索引,从后往前取
{{forloop.revcounter0}}  # 取循环当中索引,从后往前取到0
{{forloop.parentloop}}  # 取循环当中父级
if语法
{% if %}
{% elif %}
{% else %}

{% endif %}
例如: 使用if判断,将身高超过175的颜色变成红色 ,否则为蓝色
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table>
        <tr>
            <td>索引</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>编辑</td>
        </tr>
        {% for stu in stu_list %}
        <tr>
            <td>{{ forloop.counter0 }}</td>
            <td>{{ stu.name }}</td>
         
            {% if stu.height >= 175 %}
                <td style="color:red">{{ stu.height }}</td>
                {% else %}
                <td style='color:deepskyblue'>{{ stu.height }}</td>
            {% endif %}

            <td>
                <button>删除</button>
            </td>
        </tr>
        {% endfor %}

    </table>
</body>
</html>
ORM映射
以登录页面为例
模型类编写
from django.db import models

# Create your models here.
class User(models.Model):
    # 用户名
    username = models.CharField(max_length=32)
    # 密码
    password = models.CharField(max_length=120)


    def __str__(self):
        return self.username
迁移数据库
在Terminal中写入指令
python manage.py makemigrations
python manage.py migrate
使用admin对数据进行增删改查
在app01下的admin.py
from .models import User
在admin中注册用户模型
admin.site.register(User)
创建超级用户
在Terminal中
python manage.py createsuperuser
#创建用户名 密码后运行项目

http://127.0.0.1:8000/admin/login/?next=/admin/

登录成功后添加一个新用户

使用django完成登录功能
新建hml文件 login.html,写入登录页面内容
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1 {
            margin:50px auto;
            text-align:center
        }
    </style>
</head>
<body>
    <div class="c1">
        <h1>用户登录</h1>
        <form action="" method ='post'>
			{% csrf_token %}
            <p>username : <input type="text"></p>
            <p>password : <input type="text"></p>
            <p><input type="submit" value="登录"></p>
        </form>
    </div>
</body>
</html>
配路由
from django.urls import path,include
from . import views
urlpatterns = [
    path('index/',views.index),
    path('login/',views.login)
]

将内容渲染到网页中
def login(request):
    # 如果请求方式为get 就返回login页面
    if request.method == 'GET':
        return render(request, 'login.html')
    # 如果请求方式为get时 打印请求到的数据
    elif request.method =='POST':
        print(request.POST)
    return render(request,'login.html')
给login.html 中input中添加name属性,获取输入的内容
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1 {
            margin:50px auto;
            text-align:center
        }
    </style>
</head>
<body>
    <div class="c1">
        <h1>用户登录</h1>
        <form action="" method="post">
			{% csrf_token %}
            <p>username : <input type="text" name="username"></p>
            <p>password : <input type="text" name="password"></p>
            <p><input type="submit" value="登录"></p>
        </form>
    </div>
</body>
</html>
拿到获取内容
<QueryDict: {'csrfmiddlewaretoken': ['ecBIVkLTMBX8KGFdcfOz2rXE9EYIGv0QSKVehdj8qXUDSfHscZwenhnfkSh3aUwd'], 'username': ['zhangsan'], 'password': ['123321']}>
进行逻辑判断
from django.shortcuts import render
from .models import User
# Create your views here.
def index(request):
    context = {'stu_list':[{'name':'张飞','height':180},{'name':'刘备','height':175},{'name':'关羽','height':210}]}
    return render(request,'index.html',context=context)

def login(request):
    # 如果请求方式为get 就返回login页面
    if request.method == 'GET':
        return render(request, 'login.html')
    # 如果请求方式为get时 打印请求到的数据
    elif request.method =='POST':
        print(request.POST)
        # 获取网页请求到的数据
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 判断用户是否是注册用户,通过用户名来进行判断是否注册
        user_obj = User.objects.filter(username=username).first()
        # 如果用户名,密码成功 就提示登陆成功 并跳转页面
        if user_obj and user_obj.password == password:
            return render(request,'index.html',{'msg':'登陆成功'})
        # 否则提示登录失败
        else:

            return render(request,'login.html',{'msg':'登录失败'})
在html页面中写入{{msg}}来查看提示

bjects.filter(username=username).first()
# 如果用户名,密码成功 就提示登陆成功 并跳转页面
if user_obj and user_obj.password == password:
return render(request,‘index.html’,{‘msg’:‘登陆成功’})
# 否则提示登录失败
else:

        return render(request,'login.html',{'msg':'登录失败'})

``

									学识有限,仅供参考!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值