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)

Последним вариантом может быть создание этих переменных в другом месте, например, в менеджере моделей или файле метаданных, и просто вызов класса один раз в представлении.

Вернуться на верх