Django的一个小实例

1.Mysql数据库:

Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:

django-admin startapp UserModel

这个是和下面的配置文件setting.py中添加的名字相匹配

要提前建好user数据库

修改setting文件

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'UserModel',
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',#或者mysql.connector.django
        'NAME': 'user',
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

修改 userModel/models.py 文件,以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段:


class Test(models.Model):
    name=models.CharField(max_length=20)
    age=models.IntegerField()
    sex=models.CharField(max_length=10,default=20)

在终端运行如下命令

 python manage.py migrate   # 创建表结构
 python manage.py makemigrations TestModel  # 让 Django 知道我们在我们的模型有一些变更
 python manage.py migrate TestModel   # 创建表结构

前端界面

hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎登陆用户管理系统</h1>
<a href="/addUser">添加用户</a><br>
<a href="/findall" >查询用户</a>
</body>
</html>

显示全部用户的findAll.html界面 

<!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 item in list %}
    <tr>
        <td>{{item.name}}</td>
        <td>{{item.sex}}</td>
        <td>{{item.age}}</td>
        <td> <a href="/editUserContext?id={{item.id}}">编辑</a>/<a href="/delUser?id={{item.id}}">删除</a></td>
    </tr>
    {%endfor%}
</table>


</body>
</html>

添加用户的界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<form method="post" action="/editUser/">

    姓名<input type="text" name="name"><br>
    年龄<input type="text" name="age"><br>
    性别<input type="text" name="sex"><br>
    <input type="submit" value="提交">
</form>
{% if data %}
<h3>成功保存到数据库</h3>
{%endif%}
</body>
</html>

编辑用户的界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加用户</title>
</head>
<body>
<form method="post" action="editUser?id={{id}}">
    姓名<input type="text" name="name" value="{{name}}"><br>
    年龄<input type="text" name="age" value="{{age}}"><br>
    性别<input type="text" name="sex" value="{{sex}}"><br>
    <input type="submit" value="提交">
</form>
{% if data %}
<h3>成功保存到数据库</h3>
{%endif%}
</body>
</html>

uls.py文件


from django.urls import path
from MyQian import testdb
from django.contrib import admin
urlpatterns = [
    path(r'admin/',admin.site.urls),
    path(r'',testdb.index),
    path(r'addUser/',testdb.addUser),
    path(r'findall/',testdb.findAll),
    path(r'delUser',testdb.delUser),
    path(r'editUserContext',testdb.editUserContext),
    path(r'editUser',testdb.editUser)
]

新建包MyQian,在其下创建testdb.py文件

from UserModel.models import Test
from  django.shortcuts import render
from django.http import HttpResponseRedirect

def index(request):
    return render(request,'hello.html')
# 数据库操作
def addUser(request):
        if request.method=="POST":
            name=request.POST.get('name','')
            sex=request.POST.get('sex','')
            age=request.POST.get('age','')
            test1 = Test(name=name,age=age,sex=sex)
            test1.save()
            findAll(request)
            return HttpResponseRedirect("/findall")
        return render(request,'addUser.html')
def findAll(request):
    inforList=[]
    # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Test.objects.all()
    # filter相当于SQL中的WHERE,可设置条件过滤结果
    #response2 = Test.objects.filter(id=1)
    # 获取单个对象
    #response3 = Test.objects.get(id=1)
    # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
    #Test.objects.order_by('name')[0:2]
    # 数据排序
    #Test.objects.order_by("id")
    # 上面的方法可以连锁使用
    #Test.objects.filter(name="runoob").order_by("id")
    # 输出所有数据
    for var in list:
       context={}
       context['name']=var.name
       context['age']=var.age
       inforList.append(context)
    return render(request,'findAll.html',{'list':list})
def editUserContext(request):
    getId=request.GET['id']
    context={}
    user=Test.objects.get(id=getId)
    context['name']=user.name
    context['sex']=user.sex
    context['age']=user.age
    context['id']=user.id
    return render(request,'editUser.html',context)
def editUser(request):
    getId=request.GET['id']
    user = Test.objects.get(id=getId)
    user.name=request.POST.get('name','')
    user.sex=request.POST.get('sex','')
    user.age=request.POST.get('age','')
    user.id=getId
    user.save()
    return HttpResponseRedirect("/findall")
def delUser(request):
    getId=request.GET['id']
    test=Test.objects.get(id=getId)
    test.delete()
    return render(request,'findAll.html')

结束

猜你喜欢

转载自blog.csdn.net/Li_peipei/article/details/82593545