ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Django+Pycharm简单操作Mysql数据库

2019-07-02 18:26:17  阅读:226  来源: 互联网

标签:models request Django user Mysql Pycharm POST id User


静态文件配置

STATIC_URL = '/static/'
# 静态文件配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]
# 暴露给外界能够访问服务器静态文件夹下面所有的资源


STATIC_URL = '/xxx/'  # 接口前缀 跟你的静态文件夹的名字一点关系都没有
# 默认情况下这个前缀跟静态文件夹名字一样!!!
# 静态文件配置
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),  # 就是你的静态文件夹路径
    os.path.join(BASE_DIR,'static1'),
    os.path.join(BASE_DIR,'static2')
]
# ps:会依次查找列表中所有的静态文件路径 找到的话立刻停止,都没有找到返回404

form表单触发提交数据动作的两种方式:

<input type='submit'>
<buttom></buttom>

form提交数据的地址的指定及方式

  action属性控制提交的地址

  方式:

    1、全路径

      <form action='http://127.0.0.1:8080/login/'>

    2、只写路径后缀

      <form action='/login/'>

    3、不写(默认往当前路径提交)

 

  form表单默认的是get请求

#根据客户端请求方式的不同执行不同的逻辑代码
def login(request):
    # 获取用户端提交的请求方式
    print(request.method)  # 拿到的请求方式是全大写的字符串
    if request.method == 'GET':
    return render(request,'login.html')
    elif request.method == 'POST':
    return HttpResponse("收到了 老弟")


#个人建议按照下面这种方式书写 减少代码冗余及结构混乱的问题
def login(request):
    if request.method == 'POST':
    return HttpResponse('OK')
    return render(request,'login.html')
def login(request):
    # 获取用户端提交的请求方式
    print(request.method)  # 拿到的请求方式是全大写的字符串
    # if request.method == 'GET':
    #     return render(request,'login.html')
    # elif request.method == 'POST':
    #     return HttpResponse("收到了 老弟")
    if request.method == 'POST':
        print(request.POST)  # 你就把它当成一个大字典里面存放了客户端post提交的所有的数据
        # request.POST:< QueryDict: {'username': ['jason'], 'password': ['123']} >
        print(request.POST.get('username'))  # value虽然是个列表但是获取value的时候拿到却是单个元素
        # 默认只会取value列表里面的最后一个元素
        # request.POST:<QueryDict: {'username': ['jason', 'egon'], 'password': ['123']}>
        print(request.POST.getlist('username'))  # 要想一次性获取value列表里面所有的数据需要用getlist()
        # ['jason', 'egon']
    print(request.POST['password'])  # 不推荐使用该方法获取数据
        return HttpResponse('OK')
    return render(request,'login.html')
# 获取value列表里面所有的元素需要使用getlist  应用场景:用户的爱好 多选框
# get只会获取到value列表的最后一个元素

print(request.GET)  # <QueryDict: {'username': ['jason'], 'password': ['123']}>
    request.GET.get('user')  

    request.GET.getlist('username')

django连接数据库

1、需要修改配置文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day54',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'USER':'root',
        'PASSWORD':'123'
            }
        }

# 注意:键必须大写

2、告诉django用pymysql替换它默认的mysqldb模块连接数据库

  方式1:在你的项目文件夹下面的__init__.py

  方式2:也可以在你的应用文件夹下面的__init__.py

#固定写法
import pymysql
pymysql.install_as_MySQLdb()  # 告诉django用pymysql代替mysqldb连接数据库

 

ORM注意:

  • django的orm不能够自动帮你创建库,但是可以自动帮你创建表
  • 一个django项目就使用一个库,不要多个django项目使用一个库

数据库迁移(同步)命令(******)

  1. python3 manage.py makemigrations  将你的数据库变动记录到一个小本本上(并不会帮你创建表)
  2. python3 manage.py migrate         将你的数据库变动正在同步到数据库中

新增数据

# 操作数据库user表插入数据
# 方式1:
user_obj = models.User.objects.create(name=username,password=password)
# 方式2:
user_obj = models.User(name=username,password=password)
user_obj.save()  # 对象调用save方法保存到数据库

查询数据

user_list = models.User.objects.all()  # 获取user表所有的数据
# 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句
print(user_list.query) 

注意:

  • queryset对象支持索引取值 但是不推荐你使用  推荐使用自带的.first()帮你获取第一条数据

 删除数据

# 会将queryset所有的数据对象全部删除
models.User.objects.filter(id=1).delete()  


# 查询数据需要注意的是你获取到的到底是一个queryset还是一个数据对象

# 如果你是要获取数据对象first千万别忘了
user_query = models.User.objects.filter(id=edit_id).first()  

# filter当条件不存在的情况下会返回一个空的queryset对象
<QuerySet []> <class 'django.db.models.query.QuerySet'>

# 用get可以直接获取到数据对象本身但是查询条件不存在的情况下直接报错
user_obj = models.User.objects.get(id=edit_id)  

编辑数据

# 编辑对象的id的获取方式
# 方式1:利用input隐藏一个标签
<input type="hidden" name="edit_id" value="{{ user_obj.pk }}">
# 方式2:
<form action="/edit/?edit_id={{ user_obj.pk }}" method="post">



# 注意:queryset对象点修改 删除 会作用于对象内部所有的数据对象  类似于批量操作
# 方式1:
models.User.objects.filter(id=edit_id).update(name=username,password=password)
# 方式2:获取到当前数据对象
user_obj = models.User.objects.filter(id=edit_id).first()
user_obj.name = username
user_obj.save()

user_query = models.User.objects.filter(id=edit_id).first()  # 如果你是要获取数据对象first千万别忘了# filter当条件不存在的情况下会返回一个空的queryset对象<QuerySet []> <class 'django.db.models.query.QuerySet'>
user_obj = models.User.objects.get(id=edit_id)  # 用get可以直接获取到数据对象本身但是查询条件不存在的情况下直接报错

标签:models,request,Django,user,Mysql,Pycharm,POST,id,User
来源: https://blog.csdn.net/NANGE_BOK/article/details/94463121

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有