![](/img/trans.png)
[英]Attribute error : 'WSGIRequest' object has no attribute 'get'
[英]Save Button Not Working with Attribute Error: 'WSGIRequest' object has no attribute 'project'
我檢查了這里的其他帖子,這些帖子有我所擁有的屬性錯誤,但它們似乎是出於不同的原因。 我目前正在從表單中請求用戶更新項目頁面的信息。 然后,如果表單有效,我將保存表單,保存項目,然后嘗試將重定向返回到項目頁面; 但是,當我單擊按鈕時,計算機會呈現錯誤頁面。 我將附上我的 forms.py、views.py、models.py 和 urls.py:
更新部分的 Views.py:
@wraps(function)
def wrap(request, *args, **kwargs):
user = request.user
name = kwargs.get('name')
if uProjects.objects.filter(project=Project.objects.get(name=name), user=user, ifAdmin=True).exists():
return function(request, *args, **kwargs)
else:
return HttpResponseRedirect('/')
return wrap
@admin_check
def update(request, name):
project = Project.objects.get(name = name)
if request.method == "POST":
pr_form = ProjectUpdateForm(request.POST,
request.FILES,
instance=project)
#if is_admin in Member == True: #need to authenticate user, access user permissions, if user has permission:
if pr_form.is_valid():
pr_form.save()
messages.success(request, f'This project has been updated.')
request.project.save()
return redirect('project')
else:
pr_form = ProjectUpdateForm(instance=project)
context = {
'pr_form': pr_form
}
return render(request, 'projects/updateproject.html', context)
forms.py 用於 ProjectUpdateForm:
class ProjectUpdateForm(forms.ModelForm):
class Meta:
model = Project
fields=['name', 'department', 'department','bPic', 'logo',
'department', 'purpose', 'projectTag', 'lookingFor', 'recruiting']
網址.py
from projects import views as p
path('project/<str:name>/', p.project, name='project'),
path('editproject/<str:name>/', p.update, name="editproject"),
謝謝,請讓我知道我能做什么。
您的錯誤在request.project.save()
行中,請求沒有項目屬性。
實際上你不需要為項目調用save()
方法。
因為ProjectUpdateForm
是ModelForm
和ModelForm.save()
( Django docs ) 方法將創建指定 model 的新實例或更新分配的實例。
@admin_check
def update(request, name):
project = Project.objects.get(name = name)
if request.method == "POST":
pr_form = ProjectUpdateForm(request.POST,
request.FILES,
instance=project)
#if is_admin in Member == True: #need to authenticate user, access user permissions, if user has permission:
if pr_form.is_valid():
# save() returns an instance object, you can use it to manipulate your object.
instance = pr_form.save()
messages.success(request, f'This project has been updated.')
# YOUR ERROR IS ⬇️ HERE request doesn't have project attribute
# request.project.save()
# redirect with arguments
return redirect('project', name=instance.name)
...
此外,您的重定向必須包含參數name
,因為您的項目 url 需要 name 屬性:
redirect('project', name=instance.name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.