其他分享
首页 > 其他分享> > day50总结

day50总结

作者:互联网

目录

静态文件配置

STATIC_URL = '/static/'  # 访问静态资源文件接口前缀
# STATIC_URL = '/xxx/'
STATICFILES_DIRS = [  # 静态资源所在文件夹路径
    os.path.join(BASE_DIR, 'static'),  # 将static文件里的所有资源上线到服务器
    os.path.join(BASE_DIR, 'static1')
]

# <script src="/xxx/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

request对象的方法

form表单默认是get请求

django连接数据库

文件配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库类型
        'NAME': 'django',  # 指定库的名字
        'USER': 'root',  # 键必须是全大写
        'PASSWORD': 'Cql123456',
        'HOST': '127.0.1.1',
        'PORT': 3306,
        'CHARSET': 'utf8'
    }
}

设置不用默认的mysqldb连接, 而是用pymysql连接

在项目名或者在应用名下的__inint__中书写代码指定

import pymysql

pymysql.install_as_MySQLdb()

django orm

orm优点: 能够让不会数据库操作的人也能够简单方便的操作数据库

orm缺点: 封装程度太高, 会出现查询效率低的问题

django中如何操作orm

字段的增删改查

完善登录功能

django orm 查询数据库中数据

def login(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')

        # 数据库查询数据, 结果为列表套数据对象, 可以用多个and关系的关键字参数查询
        data = models.User.objects.filter(username=username)

        if not data:
            return HttpResponse('当前用户不存在!')

        user_obj = data[0]
        if user_obj.password == password:
            return HttpResponse('登录成功!')
        return HttpResponse('密码错误!')

    return render(request, 'login.html')

展示 + 新增用户功能

django orm 新增数据库中数据

'''
1. 查询数据库中的所有数据展示到前端页面
2. 前端页面上针对不同的数据都有编辑和删除按钮
3. 点击对应的按钮能完成对应的操作
'''  
def show_user_lt(request):
    user_lt = models.User.objects.all()  # 等价于: models.User.objects.filter()
    return render(request, 'show_user_lt.html', {'userLt': user_lt})


def add_user(request):
    # 草稿: 给用户返回一个添加页面, 然后用户输入提交, 后端获取数据, 写入数据库, 并给重定向到数据展示页

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        
        # create新增数据方法返回值为当前被创建的对象本身
        user_obj = models.User.objects.create(username=username, password=password)  
        # print(user_obj, user_obj.username, user_obj.password)

        return redirect('/show_user_lt/')  # 添加成功后跳转到数据展示页

    return render(request, 'add_user.html')


class User(models.Model):
    username = models.CharField(max_length=32)
    
    # 跟数据库没有关系, 所以不需要执行数据库迁移命令
    def __str__(self):
        return self.username  # 该返回值必须是字符串类型

编辑 + 删除用户功能

模板语法的注释

{# {% endfor %}#}, 不会展示到前端, html的注释会展示到前端

django orm 修改数据库中数据

def edit_user(request):
    """
    草稿:
        返回一个编辑页面, 该页面上应该展示想要编辑的用户信息
        利用get请求携带参数的方式, 获取用户想要编辑的数据的id值
        将用户想要编辑的数据查询出来, 展示到编辑页面上, 供用户修改
    """
    edit_id = request.GET.get('edit_id')
    edit_obj = models.User.objects.filter(id=edit_id).first()  # 不推荐索引取值

    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')

        # 修改数据方法: 批量操作, 会将filter查询出来的列表中的所有对象全部更新
        models.User.objects.filter(id=edit_id).update(username=username, password=password)

        return redirect('/show_user_lt/')

    return render(request, 'edit_user.html', {'edit_obj': edit_obj})
<!--在show_user_lt页面中通过模板语法为每条数据的编辑按钮设置不同的get请求携带参数-->
<tbody>
    {% for user_obj in userLt %}
    <tr>
        <td>
            <a href="/edit_user/?edit_id={{ user_obj.id }}" class="btn">编辑</a>
        </td>
    </tr>
    {% endfor %}
</tbody>

django orm 修改数据库中数据

def delete_user(request):
    delete_id = request.GET.get('delete_id')

    # 删除数据方法: 批量操作, 会将filter查询出来的列表中的所有对象全部删除
    models.User.objects.filter(id=delete_id).delete()

    return redirect('/show_user_lt/')

标签:总结,username,get,models,request,django,user,day50
来源: https://www.cnblogs.com/-406454833/p/11970172.html