创建DjangoApp

命令行

python manage.py startapp app名称

在这里插入图片描述
需要在项目中的setting进行添加改app01,例如我的项目是Python_Django
则进行如下操作
在这里插入图片描述





Pycharm

在这里插入图片描述
注意
pycharm会自动创建并配置app但是需要改成上面那样

app目录结构

在这里插入图片描述

数据库基本操作

配置

添加app的路由

Python_Django/urls.py

from django.contrib import admin
from django.urls import *
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('app01.urls')),  #app01路由
]

数据库配置

sqlite

Python_DJango/settings.py
在这里插入图片描述

mysql

下载模块PyMySQL

pip install PyMySQL

Python_DJango/settings.py
在这里插入图片描述

增删改查

app01/models.py

from django.db import models

# Create your models here.
# 消费者
class Seller(models.Model):
    username=models.CharField(max_length=32) #用户名
    password=models.CharField(max_length=128) #密码
    gender=models.BooleanField(default=True) #性别
    phone=models.CharField(max_length=32) #电话
    email=models.EmailField() #邮箱
    heading=models.CharField(max_length=128,default='1.jpg') #头像
    address=models.CharField(max_length=128) #地址

app01/views.py

from django.db.models import Q, F, Count
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from app01 import models


def register(request):
    if request.method == 'POST':
        # 1.获取表单提交的内容
        name = request.POST.get('name')
        password = request.POST.get('password')
        gender = request.POST.get('gender')
        phone = request.POST.get('phone')
        email = request.POST.get('email')
        address = request.POST.get('address')
        # 2.保存到数据库
        # 第一种方式
        # seller_obj = models.Seller()
        # seller_obj.username = name
        # seller_obj.password = password
        # seller_obj.phone = phone
        # seller_obj.address = address
        # seller_obj.gender = gender
        # seller_obj.email = email
        # seller_obj.save()
        # 第二种方式:
        models.Seller.objects.create(username=name,
                                     password=password,
                                     phone=phone,
                                     address=address,
                                     gender=gender,
                                     email=email)
        # 3.返回
        return HttpResponse('注册成功了...')

    return render(request, 'register.html')


# 删除操作
def delete_person(request):
    models.Seller.objects.get(id=1).delete()
    return HttpResponse('删除成功了...')


# 更新操作
def update_person(request):
    # 第一种方式:使用 save()
    # seller_obj = models.Seller.objects.get(id=2)
    # seller_obj.username = 'zhangsan'
    # seller_obj.password = '222'
    # seller_obj.save()
    # 第二种方式:使用update()
    ret = models.Seller.objects.filter(id=2).update(username='zs')
    # print(ret, type(ret))  # <class 'django.db.models.query.QuerySet'>
    return HttpResponse('修改成功了...')


def findall(request):
    ret=models.Seller.objects.all()
    print(ret)
    return HttpResponse("查询所有数据........")
def find(request):
    # 1. get() 直接返回当前对象, 只能返回一个对象,一般使用唯一标识
    ret = models.Seller.objects.get(id=2)
    # print(ret)
    # 2. filter(), 过滤,返回一个QuerySet类型的对象。当成列表使用即可
    # ret = models.Seller.objects.filter(password='222')
    # print(ret)  # <QuerySet [<Seller: Seller object (2)>]>
    # print(ret[1].username)

    return HttpResponse('查询成功了...')
# 条件查询
def Filtle(req):
    # 排序  class类名.objects.order_by('字段名')   (-字段名)表示降序
    print(models.Seller.objects.order_by("-id").all()) #<QuerySet [<Seller: Seller object (3)>, <Seller: Seller object (2)>]>
    #获取第一条数据 class类名.objects.first()
    print(models.Seller.objects.first()) #Seller object (2)
    # 获取最后一条数据 class类名.objects.last()
    print(models.Seller.objects.last())  # Seller object (3)
    #双下划线  字段__gte 大于等于 字段__gt 大于  字段__lt 小于 字段__lte 小于等于   字段__startswith 以什么开头
    print(models.Seller.objects.filter(id__gte=1).all()) #<QuerySet [<Seller: Seller object (2)>, <Seller: Seller object (3)>]>

    #聚合函数:aggregate
    #平均值 aggregate(Avg('字段'))
    #数目 aggregate(Count('字段'))

    #F和Q查询
    #性别是男而且电话是123的消费者
    print(models.Seller.objects.filter(gender=True,phone='123').all()) #<QuerySet [<Seller: Seller object (3)>]>
    #电话是123或者用户名是123的消费者
    print(models.Seller.objects.filter(Q(username=True) | Q(phone='123')).all()) #<QuerySet [<Seller: Seller object (3)>]>

    #F使用:同一张表格的不同字段进行比较
    print(models.Seller.objects.filter(username__lt=F('phone')).first())#None
    #分组查询
    #查询不同性别的人数
    print(models.Seller.objects.all().values('gender').annotate(Count('gender'))) #<QuerySet [{'gender': True, 'gender__count': 2}]>
    return HttpResponse("条件.........")

app01/urls.py

from django.urls import path
from . import views


urlpatterns = [
    path('register',views.register),
    path('delete_person',views.delete_person),
    path('update_person',views.update_person),
    path('findall',views.findall),
    path('find',views.find),
]

templates/register.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>register</h1>
<form action="/register" method="post">
    <p>
        用户名:<input type="text" name="name">
    </p>
    <p>
        密码:<input type="password" name="password">
    </p>
    <p>
        性别:<input type="radio" name="gender" value="True"><input type="radio" name="gender" value="False"></p>
    <p>
        电话:<input type="text" name="phone">
    </p>
    <p>
        邮箱:<input type="text" name="email">
    </p>
    <p>
        地址:<input type="text" name="address">
    </p>
    <p>
        <input type="submit" value="注册">
    </p>
</form>
</body>
</html>

数据库初始化

python manage.py check #查看models.py是否有问题
#初始化
python manage.py makemigrations
python manage.py migrate

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

效果图

添加

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除

在这里插入图片描述

修改

在这里插入图片描述

查询所有

在这里插入图片描述

查询单个

在这里插入图片描述





  • 关注微信公众号【爱上开源】,该公众号会为你提供作者在网上找到有趣的开源项目,会将使用过程写成文章呈现给读者.公众号还提供爬虫和部分计算机资源给读者.如果读者想要什么资源可以私信给我,作者会尽力查询(不要涉嫌违法资源即可)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐