簡體   English   中英

未定義Python / Django全局名稱'x'

[英]Python/Django global name 'x' is not defined

我不知道為什么,但是我正在從另一個視圖調用方法,但是現在由於我在視圖上修改了try / except,所以它不起作用。 在我所有的觀點中都使用了except,它非常完美。

該視圖應通過預填寫的表單修改菜單的元素。 實際上,我無法訪問此表單並顯示以下錯誤:

未定義Python / Django全局名稱'logoutUser'

這是視圖

from views import B2BpartnerUser
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .forms import MenuForm, MenuDetailForm
from .models import Menu, MenuParagraph, MenuItem, MenuItemProd
from django.db.models import Count
from django.utils.translation import ugettext_lazy as _


@login_required
def B2BpartnerMenuDetailModify(request, partnerId, menuId, menuItemId):
message = ''
e = B2BpartnerUser(request, partnerId)
try:
    menuDetail = Menu.objects.get(id=menuId)
    menuItem = MenuItem.objects.get(id=menuItemId)
    menuItemProd = MenuItemProd.objects.get(id=menuItemId)
except (Menu.DoesNotExist, MenuItem.DoesNotExist, MenuItemProd.DoesNotExist):
    return logoutUser(request)
if request.method == 'POST':
    form = MenuDetailForm(request.POST, mySelf=partnerId)
    if form.is_valid():
        descrShort = form.cleaned_data['descrShort']
        paragraph = form.cleaned_data['paragraph']
        producteur = form.cleaned_data['producteur']
        position = MenuItem.objects.filter(menuId = menuDetail).filter(paragraph = paragraph).count() + 1
        menuItem = MenuItem(menuId = menuDetail)
        menuItem.descrShort = descrShort
        menuItem.paragraph = paragraph
        menuItem.position = position
        menuItem.save()
        if producteur > 0:
            menuItemProd = MenuItemProd(menuItemId = menuItem)
            menuItemProd.entrepriseId = producteur
            menuItemProd.save()
        message = _('Details modified successfuly')
else:
    data = {'descrShort': menuItem.descrShort, 'paragraph': menuItem.paragraph, 'producteur': menuItemProd.entrepriseId}
    form = MenuDetailForm(mySelf=partnerId)
menuItems = MenuItem.objects.filter(menuId = menuDetail).select_related()
menus = Menu.objects.filter(entrepriseId=e)
menuParagraph = MenuParagraph.objects.filter(actif=1)
modifierDetail = True
detail = True
return render (request, 'front/B2Bmenu.html', {'MenuDetailForm': form, 'menus': menus, 'message': message, 'partnerId': partnerId, 'modifierDetail': modifierDetail, 'detail': detail, 'menuDetail': menuDetail, 'menuParagraph': menuParagraph, 'menuId': menuId, 'menuItems': menuItems})

這是模型

class Menu(models.Model):
    validDate = models.DateTimeField()
    title = models.CharField(max_length=250)
    entrepriseId = models.ForeignKey('Entreprise', null=True)
    midi = models.BooleanField()
    soir = models.BooleanField()
    prix = models.DecimalField(max_digits=18, decimal_places=2, default=0)

class MenuItem(models.Model):
    menuId = models.ForeignKey('Menu', null=True)
    position = models.IntegerField()
    paragraph = models.ForeignKey('MenuParagraph', null=True)
    descrShort = models.CharField(max_length=250)
    descrLong = models.TextField()
class Meta:
    ordering = ['position']

class MenuItemProd(models.Model):
    menuItemId = models.ForeignKey('MenuItem', null=True)
    entrepriseId = models.ForeignKey('Entreprise', null=True)

class MenuParagraph(models.Model):
    actif = models.BooleanField()
    text = models.TextField()
    position = models.IntegerField(null=True)
    class Meta:
        ordering = ['position']

如果您有任何需要,我可以為您提供更多詳細信息,如果您有任何建議,謝謝您。 感謝您抽出時間來討論我的主題:)

簡單地說:沒有在您的視圖中的任何位置定義或導入logoutUser 請記住,Python沒有真正的“全局”名稱空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM