基于django实现即时聊天通信,models、views书写,读取数据库内容返回为空

使用models.users.objects.filter()读取数据库返回为空?

我在使用django写即时通信时的时候遇到了几个小问题,挑了两个比较关键的问题记录一下。

关于django的兼容性问题,官方文档也给出了部分,但是我貌似没有找到django和mysql的兼容版本,泪目,以致于走了些弯路。
关于django和python版本兼容单搭配官网给的:https://docs.djangoproject.com/en/4.0/faq/install/
基于django实现即时聊天通信,models、views书写,读取数据库内容返回为空_第1张图片

我在使用mysql8.x的时候由于报错,开始考虑的是会不会是因为django的版本太高了,此时我的版本是3.0.3,就修改成了2.0.1,运行就报错了,这很明显不是版本的问题了!!
基于django实现即时聊天通信,models、views书写,读取数据库内容返回为空_第2张图片
而后我又将django版本更改回去了,django3.0.3。

读取数据库内容返回为空!??

使用django的小伙伴肯定在网上看了很多关于django实现聊天室一类的文章,或者你正在使用django进行数据库连接,我写的views检查了十几遍语法都没有错误,但是简单的查询啥也查不到!!!!后来我反思了一下,查不到东西应该反思这几点:
1、你的项目是否连上了数据库?
2、你的项目创建的models是否正确?
3、(最重要的一点)你知道你的访问的是哪张表吗?
我是自学的djang没有事先看官方文档,就大概知道django的简单用法就开始写程序,所以,第三个问题我根本没有搞懂!!!
我一直以为访问的数据就是我在数据库创建的users表,而且我已经在数据库中添加了数据,为啥就是没有呢?为啥就是访问不到呢?
返回运行这两条语句,产生一堆的py文件

python manage.py makemigrations appname
python manage.py migrate appname

我后来全删了,重新修改models里的内容,然后再运行!!这里的django实际访问的是执行这两条语句后产生的这个表!!!可以去数据库里进行查看!很好,它新产生的这个表是没有数据的,它和我开始创建的users表完全是两个东西!我再新的chartapp_users里添加内容,终于成功了。
基于django实现即时聊天通信,models、views书写,读取数据库内容返回为空_第3张图片

最后分享一下我的models和views吧

models.py文件,如果你没有指定主键,它会自动创建id,并作为主键。但是如果自己创建了主键,那么id这项就不会创建。

from django.db import models

# Create your models here.
class users(models.Model):
    id = models.CharField(max_length=45,)
    username = models.CharField(primary_key=True,max_length=45)
    password = models.CharField(max_length=45)

views.py文件

from django.http import HttpResponse
from django.shortcuts import render
from . import models
# Create your views here.
def login(request):
    #test = models.users.objects.all()
    #print(test)
    if request.method == 'POST':
        username = request.POST.get("username")
        password = request.POST.get("password")
        print("获得的username,password:"+username+password)
        try:
            user = models.users.objects.filter(username=username,password=password)
        if user:
            return HttpResponse('success!')
        else:
            return HttpResponse('failed!')
    else:
        return render(request,'login.html')

你可能感兴趣的:(django,数据库,python)