【问题标题】:Receiving error message "name 'SaveInput' is not defined" while defining a save method Django在定义保存方法Django时收到错误消息“名称'SaveInput'未定义”
【发布时间】:2022-01-17 07:15:22
【问题描述】:

我正在尝试在 Django views.py 中为我的 forms.Form 创建一个保存方法 (.save()),但我不断收到错误消息 - 名称“SaveInput”未定义。

from django.shortcuts import render
from django.shortcuts import redirect
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.http import HttpResponse
from django import forms
import markdown2

from . import util

class AddPageForm(forms.Form):
    title = forms.CharField(max_length=20)
    content = forms.CharField(widget=forms.Textarea(
        attrs={
            "class": "form-control",
            "placeholder": "Tell us more!"
        })
    )


def add_page(request):
    submitted = False
    if request.method == "POST":
        form = AddPageForm(request.POST)
        entries = util.list_entries()
        
        if form.is_valid():
            title = form.cleaned_data['title']
            content = form.cleaned_data['content']
            saveInput = SaveInput(title=data['title'], content=data['content'])
            saveInput.save()
            
            for entry in entries:
                if title.upper() == entry.upper():
                    context = {
                        "title": title,
                        "content": content
                    }
                    return render(request, "encyclopedia/errorpage.html", context)
            else:
                return HttpResponseRedirect(reverse("/encyclopedia:index/?submitted=True"))
    else:
        return render (request, "encyclopedia/addpage.html", {
            "form": AddPageForm()
        })

    Traceback Switch to copy-and-paste view
C:\Users\USER\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
                response = get_response(request) …
▶ Local vars
C:\Users\USER\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\base.py, line 181, in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
C:\Users\USER\Downloads\wiki\wiki\encyclopedia\views.py, line 84, in add_page
            saveInput = SaveInput(title=data['title'], content=data['content']) …
▶ Local vars

这是我试图定义方法并导致错误消息的部分

            saveInput = SaveInput(title=data['title'], content=data['content'])
        saveInput.save()

请告诉我我做错了什么,因为我之前看到的关于相同保存方法的示例不需要定义它。

另外,如果之前添加了一个没有models.filter的同名页面,如何确保不能创建页面。

谢谢。

【问题讨论】:

    标签: django django-forms cs50


    【解决方案1】:

    您需要在您的views.py 中导入或定义SaveInput

    【讨论】:

    • 当你说我应该导入 SaveInput 时,请澄清,因为我认为你只导入以前定义的方法,但这是我正在定义的方法。我从这个 stackoverflow 建议 stackoverflow.com/questions/11943912/… 中得到了这个解决方案
    • 如果您要定义一个名为 SaveInput 的类、方法或函数,您能否在问题中包含该代码?
    • 我已更新代码以显示我所询问的确切点。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2015-10-28
    • 2018-05-30
    相关资源
    最近更新 更多