Python DJango позволяет избежать присвоения переменных
def myview(request):
category=""
brand=""
series = ""
model=""
resolution=""
ram=""
#some process
return render(request ,'mypage.html',{'category':category,'brand':brand,'series':series
'model':model,'resolution':resolution,'ram':ram}
Иногда в моих проектах Django мне приходится назначать эти переменные сначала в представлениях из-за возвращаемых тегов шаблона. Но такой способ довольно уродлив. Могу ли я избежать присвоения этих переменных в представлениях?
Вы можете определить словарь, который использует часто используемые переменные, и повторно использовать его во всех ваших представлениях.
MY_VARS = {'category': '', 'brand': ''}
def myview(request):
context = MY_VARS.copy()
context.update({'more': ''})
return render(request ,'mypage.html', context)
Я думаю, что перечисление их в представлении является разумным, чтобы вы знали, что передается в ваш контекст, ваш код намного лучше в таком виде, даже если вы думаете, что он выглядит некрасиво. В зависимости от того, откуда берутся ваши данные, вашими альтернативами могут быть:
def myview(request):
"""
Create a context variable and assign them all here to avoid creating
the dict in your render function
"""
context = {'category':category,'brand':brand,'series':series,
'model':model,'resolution':resolution,'ram':ram}
#some process
return render(request ,'mypage.html', context)
def myview(request):
"""
Use the ** unpacking method to easily unpack them into your context
"""
context = {**my_variables, ...}
#some process
return render(request, 'mypage.html', context)
Последним вариантом может быть создание этих переменных в другом месте, например, в менеджере моделей или файле метаданных, и просто вызов класса один раз в представлении.