django入门学习

话不多说我们直接开始进入正题~~~~~~

什么是django??

        Django 是一个基于 Python 的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使开发Web应用程序变得更加简单和快速。Django提供了许多功能和工具,包括自动化的管理面板、表单处理、认证系统、用户管理、数据库抽象层等,使开发人员能够更专注于业务逻辑的实现。Django还遵循“DRY(不要重复自己)”原则,使得开发更加高效。它被广泛用于构建高质量的Web应用程序和网站。

直接说怎么做不啰嗦了(要看具体内容欢迎去看django官网)

此文章是为了自己巩固学习而写的(只有我能看懂,不推荐看)

进入正题

1. pip install django

2.通过pycharm创建一个django项目 在通过(python manage.py startapp make_me)

3.进入之后

        3.1

                

        会出现这几个文件

        如果我们不考虑部署服务器的话我们所要操作只有settings和urls文件

                settings->整个项目的配置文件(进入settings)

                        1.注册app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'make_me'#这是我的app

]

                        2.删除不必要项

                        

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': []
        ,
        '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',
            ],
        },
    },
]

                                删除‘DIRS’中的部分如图

                                3.修改数据库

                                我用的是mysql

DATABASES={
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tea_stu',
        'USER': 'root',
        'PASSWORD': '031015',
        'HOST': '127.0.0.3',
        'PORT':3306,
    }
}

4.在创建的app下面添加static文件(用来存放静态文件bootsrap去官网里面下载这里我用的是bs3)

        

5.在app下创建templates文件(存放html文件)

6.在app目录下创建utils(用来存放组件(可以直接使用的))

7.导入必要的库pymysql,mysqlclient等在

在init文件中添加

import pymysql
pymysql.install_as_MySQLdb()

在app(make_me)中我们所要经常操作的是models和views(主要的思路就是在html中写下路由链接-点击跳转到urls中-通过urls中的函数跳转到views视图函数中进行作用,在跳转到html中进行作用)

案例

        配置完成之后(让我们来写一个登录页面)

1.通过models.py写自己所需要的表单

# 学生信息
class Stu_Info(models.Model):
    stu_name = models.CharField(verbose_name="名字",max_length=32)
    stu_age = models.IntegerField(verbose_name="年龄")# 年龄直接使用IntegerField
    gender_choice = {
        (1,'男'),
        (2,'女')
    }
    stu_gender = models.SmallIntegerField(verbose_name="性别",choices=gender_choice)# 当选择使用的时候直接使用SmallIntegerField来当做字段
    stu_address = models.CharField(verbose_name="地址",max_length=64)
    stu_high = models.CharField(verbose_name="身高",max_length=32)
    stu_weight = models.CharField(verbose_name="体重",max_length=32)
    stu_id = models.CharField(verbose_name="学号",max_length=64)
    stu_pwd = models.CharField(verbose_name="密码",max_length=32)

通过终端,python manage.py makemigrations 和 python manage.py migrate 进行数据迁移

2.urls页面

3.view页面

# 登录页面
def login_view(request):
    return render(request, 'login.html')


# 登录按钮提交后,验证数据库中是否存在用户,存在就跳转主网页
def login_view_submit(request):
    if request.method ==  "POST":#从post里面获取数据
        username = request.POST.get("username",'')
        password = request.POST.get('password','')
        if username and password:
            stu = models.Stu_Info.objects.filter(stu_name=username,stu_pwd=password).count()
            if stu >= 1:
                return render(request,'index.html')
            else:
                return render(request,'login.html')
        return render(request,'login.html')

4.html页面

直接点击进去后的登录页面

后面点击提交之后post请求就会提交(下面会有具体的逻辑)

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-image: url({% static 'image/img2.jpg' %});
            background-size: cover;
        }
        .login-container {
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
             width: 400px; /* 修改宽度 */
            height: 400px;
            margin: 20px; /* 添加外边距 */
        }
        .login-container h2 {
            text-align: center;
        }
        .login-container form {
            display: flex;
            flex-direction: column;
        }
        .login-container form input[type="text"],
        .login-container form input[type="password"] {
            margin-bottom: 15px;
            padding: 10px;
              margin-top: 10%;
            border-radius: 4px;
            border: 1px solid #ccc;
            font-size: 16px;
        }
        .login-container form input[type="submit"] {
            margin-top: 20%;
            background-color: #007bff;
            color: #fff;
            border: none;
            padding: 10px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s ease;
        }
        .login-container form input[type="submit"]:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <div class="login-container" style="color: blue">
        <h2>用户登录</h2>
        <form  method="post" action="/index/login/">
              {% csrf_token %}
            <input type="text" name="username" placeholder="Username" required>
            <input type="password" name="password" placeholder="Password" required>
            <input type="submit" value="Login">
            <span style="color: #2aabd2">没有账号?<a href="/register/">去注册</a></span>
        </form>
    </div>
</body>
</html>

5.逻辑处理

runserver进去之后(由于路由urls中

path('',views.login_view),里面""为空,后面login_view函数为
def login_view(request):
    return render(request, 'login.html')
所以登录之后直接进入页面login.html)

后面输入信息后就是post请求通过函数

login_view_submit

来判断数据库中的信息来验证

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值