未定义/Url路径1/名称“变量”处的名称错误

2024-09-28 01:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取要显示的帖子详细视图的URL,但它有一个错误

我尝试搜索,但结果涉及重新格式化,将运算符从=切换到==这是不正确的

它抛出了一个异常,我在底部包含了完整的回溯

我使用的是Django3,这段代码以前在Django2中使用过。我已经能够让代码在这里和那里进行一些小的修改,直到出现这个错误

注意:类别和子类别应用尚未添加,因此仅使用一个简单的默认值作为占位符值。我第一次能够顺利完成这项任务

exc     

NameError("name 'newsname' is not defined")

get_response    

<bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x0446CFE8>>

request     

<WSGIRequest: POST '/panel/news/add/'>

使用django3

image of the error

在views.py上的可视代码中,我看到一个pylint错误

未定义的变量“newsname” 那是

catname=newsname, 

那是

catid=newsid,

在这部分代码中

        b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newsname, catid=newsid, show=0)

由此

def news_add(request):

if request.method == 'POST':

    newstitle = request.POST.get('newstitle')
    newscat = request.POST.get('newscat')
    newstxtshort = request.POST.get('newstxtshort')
    newstxt = request.POST.get('newstxt')

    if newstitle == "" or newstxtshort == "" or newstxt == "" or newscat == "" :

        error = "All Fields Required"
        return render(request, 'back/error.html', {'error':error})

    b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newsname, catid=newsid, show=0)
    b.save()
    return redirect('news_list')

return render(request, 'back/news_add.html')

panel

新闻/视图.py完整


from django.shortcuts import render, get_list_or_404, redirect
from main.models import Main
from .models import News


def news_detail(request,word):

    site = Main.objects.get(pk=1)
    news = News.objects.filter(name=word)

    return render(request, 'front/news_detail.html', {'site':site, 'news':news})

def news_list(request):

    news = News.objects.all()

    return render(request, 'back/news_list.html', {'news':news})

def news_add(request):

    if request.method == 'POST':

        newstitle = request.POST.get('newstitle')
        newscat = request.POST.get('newscat')
        newstxtshort = request.POST.get('newstxtshort')
        newstxt = request.POST.get('newstxt')

        if newstitle == "" or newstxtshort == "" or newstxt == "" or newscat == "" :

            error = "All Fields Required"
            return render(request, 'back/error.html', {'error':error})

        b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newsname, catid=newsid, show=0)
        b.save()
        return redirect('news_list')

    return render(request, 'back/news_add.html')

新闻/url.py

from django.conf.urls import url
from . import views

urlpatterns = [

   url(r'^news/(?P<word>.*)/$', views.news_detail, name='news_detail'),
   url(r'^panel/news/list/$', views.news_list, name='news_list'),
   url(r'^panel/news/add/$', views.news_add, name='news_add'),

]

新闻/模型.py

from __future__ import unicode_literals
from django.db import models


class News(models.Model):

   name = models.CharField(max_length=50)
   short_txt = models.TextField(max_length=30, default='-')
   body_txt = models.TextField(max_length=30, default='-')
   date = models.TextField(max_length=12, default='-')
   pic = models.TextField(max_length=30, default='-')
   writer = models.TextField(max_length=50, default='-')
   catname = models.CharField(max_length=50, default='-')
   catid = models.IntegerField(default='0')
   show = models.IntegerField(default='0')


   def __str__(self):
       return self.name

完全回溯

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/panel/news/add/

Django Version: 3.0.6
Python Version: 3.8.2
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'main',
 'news']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback (most recent call last):
  File "C:\Users\taylo\django\mpv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\taylo\django\mpv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\taylo\django\mpv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\taylo\django\mpv\myproject\news\views.py", line 33, in news_add
    b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newsname, catid=newsid, show=0)

Exception Type: NameError at /panel/news/add/
Exception Value: name 'newsname' is not defined

Tags: djangonametxtaddgetreturnmodelsrequest
1条回答
网友
1楼 · 发布于 2024-09-28 01:24:47

news_add函数或视图中的任何位置都不定义newsname变量

b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newsname, catid=newsid, show=0)

解决办法是将这条线改为

b = News(name=newstitle, short_txt=newstxtshort, body_txt=newstxt, date=2019, pic="-", writer="-", catname=newscat, catid=newsid, show=0)

相关问题 更多 >

    热门问题