【发布时间】:2017-08-23 05:17:54
【问题描述】:
在 django 中,它是对整个页面/url 只有一个视图的唯一方法。该页面包含的任何功能(上传/发布/更新/登录)只需要在该视图内传递。我发现这是唯一的方法,因为我只能用一个视图返回一个 url。
我想知道是否有任何方法可以为每个函数制作不同的视图(可能是基础视图或普通视图),最后将它们全部添加到一个视图中(该视图也返回该 url)。如果有可能比如何?因为在一个视图中包含 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 可以有一个视图
-
@KlausD。我已经添加了我的代码。在一个视图中,我必须编写所有函数如何分离
-
@JohnJosephFernandes 如果我必须将所有代码写在一个文件中也没关系。但我需要用不同的函数/方法编写它们。最后,我如何将所有方法带入我的主视图。
标签: python django model-view-controller django-views django-urls