簡體   English   中英

Django表單提交URL不起作用

[英]Django form submit url not working

我是Django的新手,無法弄清楚為什么我的表格不起作用。 似乎在表單提交后,即使將url更改為/82nsj/update它仍然會轉到視圖中的index方法。

查看

from business.models import Business, Token
from django.shortcuts import render
from business.forms import BusinessForm

def index(request, token):
    try:
        business = Business.objects.get(token__token=token)
    except Token.DoesNotExist:
        business = None
    except Business.DoesNotExist:
        business = None

    form = BusinessForm(instance=business)
    return render(request, 'business/index.html', {'form': form})

def update(request, token):
    try:
        business = Business.objects.get(token__token=token)
    except Token.DoesNotExist:
        business = None
    except Business.DoesNotExist:
        business = None

    form = BusinessForm(request.POST, instance=business)
    if form.is_valid():
        form.save()
        return render(request, 'business/index.html', {'form': form})

網址

url(r'^$', 'business.views.index', name='home'),
url(r'^business/(?P<token>\w+)/', 'business.views.index', name='business'),
url(r'^business/(?P<token>\w+)/update/', 'business.views.update', name='business_update'),

形式

self.helper = FormHelper(self)
self.helper.form_class = 'form-horizontal'
self.helper.form_action = 'update/'
self.helper.form_method = 'post'
self.helper.layout = Layout(
    HTML("<p class='alert-info alert'>Please confirm your business contact information is updated and correct.</p>"),
    Div(
        'my',
                'fields',
        FormActions(
            Submit('save_changes', 'Save changes', css_class="btn-primary"),
        ),
        css_class='row-fluid'
    )
)

我知道這不起作用,因為我在indexupdate設置了斷點,在按下提交按鈕后,只有index斷點到達。

我做錯了什么阻止了update方法在表單提交上運行?

這可能與您的url(...有問題url(...正則表達式。

Django將轉到匹配的第一個URL,如果你有這個

url(r'^business/(?P<token>\w+)/', 'business.views.index', name='business'),
url(r'^business/(?P<token>\w+)/update/', 'business.views.update', name='business_update'),

轉到/business/<token>/anything_goes_here將始終轉到business.views.index

要停止此操作,請end of expression包含$

url(r'^business/(?P<token>\w+)/$', 'business.views.index', name='business'),

現在您的/business/<token>/update/匹配第一個URL,然后匹配business.views.update

暫無
暫無

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

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