devildayne
@devildayne

Как импортировать class из другого приложения Django?

Собственно проблема:
Есть приложение в джанге название - 'stats'(цель приложения вытаскивать значения из бд и подключать его когда нужно)
Вот как выглядит та вьюха, к которой мне нужен глобальный доступ во всем проекте
stats views.py
class ShowStats(View):
	def get(self,request):
		if request.user.is_authenticated:
			global auser,UserGold ,UserKnights,UserXp,UserEnergy,UserPower,UserLevel,status,xpfl,progress
			auser = request.user.id

			GetStat = UserAttribute.objects.filter(user_id = auser)
			for s in GetStat:
				UserPower = s.power
				UserGold = s.gold
				UserKnights = s.knights
				UserXp = s.xp
				UserLevel = s.level
				UserEnergy = s.energy
				status = s.isComplete


			mylvl =  UserLVL.objects.raw("SELECT lvl FROM userlevel_userlvl WHERE lvlxp - {}<=0".format(UserXp))
			for j in mylvl:
					cl = j.lvl


			xpforlevel =  UserLVL.objects.raw("SELECT lvl,lvlxp FROM userlevel_userlvl WHERE lvl={}".format(UserLevel))
			for k in xpforlevel:
					xpfl = k.lvlxp
			if UserXp >= xpfl:
					UserAttribute.objects.filter(user_id=auser).update(level=F('level')+1,xp=F('xp')-UserXp)

			progress = decimal.Decimal(round((UserXp/xpfl)*100,0))



		#setLevel = UserAttribute.objects.filter(user_id = auser).update(level=cl)
			return auser,UserGold,UserKnights,UserXp,UserLevel,UserEnergy,UserPower,status,xpfl,progress

		else:
			return redirect('index')


Вот так я её импортирую from game.views import ShowStats
Вызываю метод уже в другой вьюхе и по идее должен получить значения из return,но return ничего не возвращает.

class FarmIndex(View):
    def get(self,request):
        usr = request.user.id
        ShowStats.get(self,request)
        
        context = {
					'UserGold':UserGold,'UserKnights':UserKnights,'UserXp':UserXp,'UserLevel':UserLevel,
					'UserEnergy':UserEnergy,'UserPower':UserPower,'status':status,'xpfl':xpfl,'progress':progress,
				  }

        return render(request,'farm.html',context)

Если вставить класс что вытаскивает значения во вьюху, в которой я вызываю этот метод - все работает. При импорте - нет(

Подозреваю, что в начале if request.user.is_authenticated: возвращает False

Просто хочется по минимуму нарушать принцип DRY

Помогите,пожалуйста.
PS код ховно)) Но учусь
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Что-то с проектированием кода у вас вообще беда...
Зачем globals? Про pep8 слышали? Само именование переменных, да и сам код...
Вынесите логику в отдельную функцию, импортируйте ее и используйте в своих вьюхах...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы