django throws an error when there is no row in the table! django.db.utils.OperationalError: no such table: home_general

django throws an error when there is no row in the table! django.db.utils.OperationalError: no such table: home_general

主要是在 views.py 查询集上创建问题!我已经尝试过使用包含一些行的现有数据库......没有错!但是,如果我从管理面板中删除所有行,则会显示此错误 django.db.utils.OperationalError: no such table: home_general

如果 table 为空,这些查询会出错

general = General.objects.first()
social = Social_URI.objects.all()
seo = SEO.objects.first()
project_data = Project.objects.all()

如果我将它们绑定在 try-except 中,那么就不会发生像 django.db.utils.OperationalError 这样的错误:没有这样的 table: 但由于空行,我再次遇到模板错误!

from django.shortcuts import render, redirect
from django.views.decorators.http import require_http_methods
from .models import Event, Comment
from home.models import General, Social_URI, SEO
from projects.models import Project

try:
    general = General.objects.first()
except:
    general = None
try:
    social = Social_URI.objects.all()
except:
    social = None
try:
    seo = SEO.objects.first()
except:
    seo = None
try:
    event_data = Event.objects.all()
except:
    event_data = None
try:
    project_data = Project.objects.all()
except:
    project_data = None

def event(request):
    try:
        data = {
            "logo": general.logo,
            "favicon": general.favicon,
            "title": general.title,
            "top_phone": general.top_phone,
            "top_email": general.top_email,
            "about_image": general.about_image,
            "about_title": general.about_title,
            "about_text": general.about_text,
            "footer_logo": general.footer_logo,
            "footer_text": general.footer_text,
            "footer_copyright": general.footer_copyright,
            "footer_address": general.footer_address,
            "social_url": social,
            "ga_id": seo.ga_id,
            "seo_author": seo.author,
            "seo_description": seo.description,
            "seo_keywords": seo.keywords,
            "events_data": event_data,
            "projects_data": project_data
        }
    except:
        data = None
    return render(request, "events/event.html", data)


def event_view(request, id):
    event_view_data = Event.objects.get(pk=id)
    comments = Comment.objects.filter(event=id)
    data = {
        "logo": general.logo,
        "favicon": general.favicon,
        "title": general.title,
        "top_phone": general.top_phone,
        "top_email": general.top_email,
        "about_image": general.about_image,
        "about_title": general.about_title,
        "about_text": general.about_text,
        "footer_logo": general.footer_logo,
        "footer_text": general.footer_text,
        "footer_copyright": general.footer_copyright,
        "footer_address": general.footer_address,
        "social_url": social,
        "ga_id": seo.ga_id,
        "seo_author": seo.author,
        "seo_description": seo.description,
        "seo_keywords": seo.keywords,
        "event_id": event_view_data.id,
        "event_title": event_view_data.title,
        "event_thumb": event_view_data.thumb.url,
        "event_desc": event_view_data.description,
        "event_amount": event_view_data.amount,
        "event_location": event_view_data.location,
        "event_calender": event_view_data.calender,
        "comments": comments,
        "projects_data": project_data
    }
    return render(request, "events/event_view.html", data)

@require_http_methods(["POST"])
def comment(request):
    event_id = request.POST.get("event_id")
    username = request.POST.get("username")
    email = request.POST.get("email")
    message = request.POST.get("message")
    event = Event.objects.get(pk=event_id)
    comment = Comment(event=event, username=username, email=email, message=message)
    comment.save()
    return redirect("event_view", id=event_id)
Exception Value:    
Reverse for 'event_view' with arguments '('',)' not found. 1 pattern(s) tried: ['event_view/(?P<id>[0-9]+)\Z']

美好的一天!

通常,当您在 models.py 中创建模型时会发生 django.db.utils.OperationalError: no such table,但不要 运行 迁移到新创建的数据库,更多信息请参见此处:Django: OperationalError No Such Table

至于 Reverse for 'event_view' with arguments '('',)' not found. 1 pattern(s) tried: ['event_view/(?P<id>[0-9]+)\Z']:它表示您正在尝试打开 url event_view/ 而没有 id。它必须类似于 event_view/1/,更多内容在这里:Reverse for 'view_item' with arguments '('',)' and keyword arguments '{}' not found