0

在django中,只有一個視圖只有一個整頁/網址。並且該頁面包含的任何函數(上傳/發佈/更新/登錄)只需要在該視圖內傳遞。我發現這是唯一的方法,因爲我只能用一個視圖返回一個網址。django管理模板和視圖的最佳方式

我想知道是否有任何方法,我可以爲每個函數做不同的視圖(可以是基類或普通類),並最終將它們全部添加到單個視圖中(該視圖也返回該url)。如果有可能比如何?因爲擁有一個視圖內的所有網址功能對我來說看起來很古怪。

################## 
def logInRegisterUser(request): 
    ###################login################## 
    loginForm = UserLoginForm(request.POST or None) 
    if loginForm.is_valid() and 'log-in' in request.POST: 
     username = loginForm.cleaned_data.get("username") 
     password = loginForm.cleaned_data.get("password") 
     user = authenticate(username = username, password = password) 
     # if not user or not user.check_password(password): 
     # raise validation error 
     login(request, user) 
     print(request.user.is_authenticated()) 

    ###################registration################### 
    registrationForm = RegistrationForm(request.POST or None) 
    if registrationForm.is_valid() and 'sign-up' in request.POST: 
     user2 = registrationForm.save(commit = False) 
     password2 = registrationForm.cleaned_data.get('password') 
     user2.set_password(password2) 
     user2.save() 

     new_user = authenticate(username = user2.username, password = password2) 
     login(request, new_user) 

    ###################log-out################### 
    ###################search-post################### 
    ####################voting-post################## 

    context = { 
     "loginForm":loginForm, 
     "registrationForm":registrationForm, 
     "re":request.POST 
    } 

    ###################return################### 
    return render(request,"enter.html",context) 
+0

請舉例說明你有什麼和應該改變什麼! –

+0

Views.py只是一個python文件,您可以創建多個包含您的函數的.py文件(根據文件的功能命名文件),然後像通常那樣導入它們。 –

+0

如果你的觀點太混亂了,你可以考慮在不同的python文件中編寫每個函數,並將該方法導入到視圖中。但默認情況下,一個URL可以有一個單一的視圖 –

回答