您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

Django入门(2)

目录

一、模板渲染页面

二、模板语法总结

三、ORM模型创建和操作

四、使用ORM+模板实现登录功


 

一、模板渲染页面

          使用Django返回模板页面

           1、在templates目录下面创建页面index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1 style="color: red;text-align: center">Hello Django!!</h1>
</body>
</html>

          2、在子应用app下的views.py中谢逻辑返回页面

from django.shortcuts import render

from django.http import HttpResponse


def index(request):
    # 这里不写请求方法,默认是get
    # return HttpResponse('')
    return render(request, 'index.html')

           3、书写Django中的路由

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index)
]

          模板变量渲染

           使用模板变量的形式展示部分数据

# 形如:
{#<h1 style="color: red;text-align: center">{{ stu_list }}</h1>#}

二、模板语法总结

         for循环

 

         使用模板中使用标签语言{% for %} {% endfir %} 

          对视图函数传递的数据集进行遍历访问,如:字符串,列表,元              祖,字典,集合这样的数据   

          模板标签使用大括号百分号的组合{% lag %},具有一些特殊的功            能性 

          {% for %}与python中的for循环类似,要记得有闭合

          模板标签{{ endfor }}

 

         if语法

                {% if %}

                {% elif %}

                {% else %}

                {% endif %}

 


{# for i in items #}

{# endfor #}

        1.在views.py中写一个函数视图

from django.shortcuts import render


def index(request):
    # 这里不写请求方法,默认是get
    # return HttpResponse('')

    context = {'stu_list': [{'id': '1', 'name': '刘备'}, {'id': '2', 'name': '关羽'}]}
    return render(request, 'index.html', context=context)

        2.在页面当中接收context传递的内容

{% for i in item %}
    # 这里写循环内容
{% endfor %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table class="t1" >
        <tr>
            <td>索引</td>
            <td>编号</td>
            <td>名称</td>
            <td>年龄</td>
            <td>操作</td>
        </tr>
        {% for stu in stu_list %}
            <tr>
                <td>{{forloop.counter0}}</td>
                <td>{{stu.id}}</td>
                <td>{{stu.name}}</td>
                {% if stu.age > 30%}
                    <td class="td01">{{stu.age}}</td>
                    {% else %}
                    <td class="td02">{{stu.age}}</td>
                {% endif %}
                <td>
                    <button>删除</button>
                </td>
            </tr>
        {% endfor %}
    </table>
</body>
</html>

三、ORM模型创建和操作

             django和数据库之间的关系映射

             在models.py中写入一个类,这个类就对应数据库的一个表

             里面的属性,就是表中的字段

          数据库字段属性类型

               字符串  CharField

               整形      IntegerField

               图片      ImageField

               邮箱      EmailField

from django.db import models

# Create your models here.

class User(models.Model):
    # # verbose_name 这个会在一会的admin中用到
    username = models.CharField(max_length=32,verbose_name='用户名')  
    password = models.CharField(max_length=128,verbose_name='密码')

    def __str__(self):
        return self.username

    class Meta:
        verbose_name='用户'
        verbose_name_plural = verbose_name

       生成迁移文件

python manage.py makemigrations

       执行迁移

python manage.py migrate

 

四、使用ORM+模板实现登录功能

         1.在templates下面新建一个login.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div01{
            width: 50%;
            margin: 50px auto;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="div01" >
        <h2>登录页面</h2>
        {{ msg }}
        <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>

           2.使用django把login渲染到网页中

def login(request):
    # 判断请求方法,如果请求方法为get,返回login页面
    if request.method == 'GET':
        return render(request,'login.html')

           3.请求方法为post时,先打印一下请求到数据,看看数据格式

def login(request):
    # 判断请求方法,如果请求方法为get,返回login页面
    if request.method == 'GET':
        return render(request,'login.html')
    elif request.method == 'POST':
        print(request.POST)
        return render(request,'login.html')

           4.html为input添加name属性,获取输入的内容

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div01{
            width: 50%;
            margin: 50px auto;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="div01" >
        <h2>登录页面</h2>
        {{ msg }}
        <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>

           5.在登录视图,完成登录逻辑

def login(request):
    # 判断请求方法,如果请求方法为get,返回login页面
    if request.method == 'GET':
        return render(request,'login.html')
    elif request.method == 'POST':
        print(request.POST)
        # 获取网页请求数据
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 判断用户是否是注册用户
        # 通过用户名获取用户对象,用来判断用户是否是注册用户
        # filter() 过滤符合条件的数据
        # first() 获取第一条数据
        user_obj = User.objects.filter(username=username).first()
        print(user_obj)
        # 判断,如果用户存在,并且密码正确,跳转页面
        if user_obj and user_obj.password == password:
            context = {'stu_list': [{'id': '1', 'name': '刘备', 'age': '35'}, {'id': '2', 'name': '关羽', 'age': '29'}]}
            return render(request,'index.html',context=context)
        # 否则,提示用户名和密码不正确
        else:
            return render(request,'login.html',{'msg':'用户名和密码不正确'})

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进