簡體   English   中英

為什么我會收到此錯誤“在賦值之前引用了局部變量‘文本’”

[英]Why am I getting this error "local variable 'text' referenced before assignment"

我正在嘗試使用 python 和 Django 創建一個共享函數,當我運行“共享”時,它給了我一個錯誤。 這是我的代碼:

視圖.py

    from django.shortcuts import render
from basicapp.forms import UserForm, UserProfileInfoForm, PostForm
from django.contrib.auth.models import User
from basicapp.models import UserProfileInfo


from django.urls import reverse
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth import login,logout,authenticate
@login_required
def user_post(request):
    form = PostForm(request.POST)
    if form.is_valid():
        text = form.cleaned_data['post']
        form = PostForm()
        return HttpResponseRedirect(reverse('index'))
    else:
        HttpResponse("Not Valid try dat boi agian")

    render(request, 'basicapp/userpost.html', 
                    {'form':form,
                     'text':text})

表格.py

class PostForm(forms.Form):
    post = forms.CharField(max_length=256)

這是錯誤:

您沒有在else塊中返回HttpResponse執行繼續到下一行想要定義text變量的代碼,但由於is_valid塊從未運行,因此范圍內沒有text

一旦在form.is_valid()測試的ifelse分支中都有return ,您也將永遠不會到達最后一行。

def user_post(request):
    form = PostForm(request.POST)
    if form.is_valid():
        text = form.cleaned_data['post']
        form = PostForm()
        return HttpResponseRedirect(reverse('index'))
    else:
        return HttpResponse("Not Valid try dat boi agian") # return here

    return render(request, 'basicapp/userpost.html', # should return here too but this line will never run
                           {'form':form,
                            'text':text})

暫無
暫無

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

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