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)
請舉例說明你有什麼和應該改變什麼! –
Views.py只是一個python文件,您可以創建多個包含您的函數的.py文件(根據文件的功能命名文件),然後像通常那樣導入它們。 –
如果你的觀點太混亂了,你可以考慮在不同的python文件中編寫每個函數,並將該方法導入到視圖中。但默認情況下,一個URL可以有一個單一的視圖 –