2014-10-12 42 views
1

我想在Django的同一頁上呈現兩個表單(註冊和登錄)。我想通過更改<form action="some_url"標記將數據發佈到任一字段。這是這個答案中的第一個建議:https://stackoverflow.com/a/1395866/2532070是否可以發佈到不同的Django視圖?

這可能嗎?目前,我有:

urls.py:

url(r'^', HomePageView.as_view()), 
url(r'^signup/$', SignupUser.as_view(), name="signup_user"), 

views.py:

class HomePageView(View): 
    template_name = "index.html" 

    login_form = AuthenticationForm() 
    signup_form = UserCreationForm() 

    def get(self, request, *args, **kwargs): 
     return render(request, self.template_name, { 
      'login_form': self.login_form, 
      'signup_form': self.signup_form, 
      'signup_action': reverse("signup_user")} 
     ) 

class SignupUser(CreateView): 
    model = settings.AUTH_USER_MODEL 
    form_class = UserCreationForm 

我的模板:

<form action="{{ signup_action }}" method="POST">{% csrf_token %} 
    {{ signup_form }} 
    <input type="submit" value="Signup"> 
</form> 

不幸的是,POST,似乎是在提醒後功能HomePageView,而不是調用SignupUser視圖。

是否可以通過正確格式化我的表單的action="..."標籤來調用SignupUser視圖和POST數據?

+0

當然,這是可能的:這只是標準的HTML行爲。你可以檢查(通過查看源代碼)動作屬性正確填充? – 2014-10-12 12:34:26

+0

謝謝丹尼爾!它加載爲action =「/ signup /」 – YPCrumble 2014-10-12 12:36:48

回答

1

問題不在於你認爲它的地方。

問題是,您的初始URL,指向HomePageView,捕獲一切,因爲您不指定字符串的結尾。你有一個開始錨,^,但不是一個結束錨,這意味着它基本上匹配「開始的每一個字符串」,即一切。

你只需要匹配空字符串:

url(r'^$', HomePageView.as_view()), 
相關問題