【问题标题】:Django: Cant create formDjango:无法创建表单
【发布时间】:2021-10-05 02:15:16
【问题描述】:

我相信这个问题与试图保存时的views.py有关,因为在我点击提交后它并没有将我重定向到主页。

以下是相关文件:

urls.py:

    urlpatterns = [
    path('Auditor/', views.Auditor, name='Auditor'),
    path('Auditor/<str:pk>/', views.auditFormPage, name='AuditForm'),
    path('register/', views.registerPage, name='Register'),
    path('Login/', views.loginPage, name='Login'),
    

]

urlpatterns += staticfiles_urlpatterns()

views.py:

    def auditFormPage(request, pk):
    model = datas.objects.filter(qs_login='nicobari')
    data= datas.objects.get(Task_ID=pk)
    
    context = {
    "items": model,
    "data": data
}
    if request.method == "POST":
        form = auditForm(request.POST, instance=data)
        if form.is_valid():
            form.save()
            messages.success(request,'Data Updated')
        else:
            messages.success(request,'Data Updated')
    else:
        messages.success(request,'Data Updated')

【问题讨论】:

  • 注册完成但没有重定向?是真的吗?
  • 不,不幸的是它也没有这样做,只要我点击 它就会刷新页面,但所有数据都会刷新到原来的样子未进行任何更改

标签: python html django web


【解决方案1】:

我的博客项目更新方法

def update(request, slug):
if not request.user.is_authenticated:
    raise Http404()

blog = get_object_or_404(Blog, slug=slug)
form = BlogForm(request.POST or None, request.FILES or None, instance=blog)
if form.is_valid():
    form.save()
    messages.success(request, "Blog Updated")
    return HttpResponseRedirect(blog.get_absolute_url())

context = {
    "title": "Blog",
    "form": form
}
return render(request, 'blog/create.html', context)

希望能指导你 django blog project

【讨论】:

  • 这很有帮助,但仍然不会更新我的页面!!!!我不知道为什么yyyy
  • 您确定您使用的是模型表单吗?
【解决方案2】:

所以我有一个朋友通过创建以下表单为我解决了这个问题:

class auditForm(ModelForm):
    class Meta:
        model = datas
        fields = '__all__'
        
    def __init__(self, *args, **kwargs):
        super(auditForm, self).__init__(*args, **kwargs)
        self.fields['country'].disabled = True # Makes the field un-editable
        self.fields['associate_resolve_date'].disabled = True
        self.fields['QA_Comments_on_Associate_Action'].widget = forms.Textarea(
            attrs={'class': 'form-control', 'style': 'height: 100px'}) #Sets the size of the widget
        for field in self.fields:
            print(field)
            self.fields[field].required = False
            if field != "qs_login" and field != "Status" and field != "associate_resolve_date" and field != "QA_Comments_on_Associate_Action":
                self.fields[field].widget.attrs['class'] = "form-control"

所以由于某种原因,这种类型的表格成功了,只有我不明白的部分是这样的:

for field in self.fields:
                print(field)
                self.fields[field].required = False
                if field != "qs_login" and field != "Status" and field != "associate_resolve_date" and field != "QA_Comments_on_Associate_Action":
                    self.fields[field].widget.attrs['class'] = "form-control"

我希望这对任何人都有用。

【讨论】:

    猜你喜欢
    • 2018-07-13
    • 2015-08-29
    • 2022-10-03
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2015-09-15
    相关资源
    最近更新 更多