Отобразить конкретный объект в соответствии с попытками / исключениями и условиями в django - PullRequest
0 голосов
/ 16 мая 2019

Я работаю над своим django проектом, и мне нужна небольшая помощь, чтобы управлять и отображать объект с некоторыми условиями.

До сих пор я не преодолевал отображение объекта с помощью моегоусловия.

Этот объект является Руководством пользователя, которое может отображаться:

  • на английском
  • на французском
  • на английском и французском
  • нет руководства пользователя

Тогда есть несколько случаев:

  • Если руководство пользователя на выбранном языке отсутствует, оно отображает существующее на сервере, независимо от языка,
  • Если вообще нет руководства пользователя, я отображаю домашнюю страницу с сообщением об ошибке.

До сих пор, если руководство пользователя на определенном языке не существует, оно автоматически перенаправляется на мойдомашняя страница с сообщением об ошибке вместо отображения руководства пользователя, существующего на другом языке.

Это мой код:

def get(self, request):
    if request.user.is_anonymous:
        try:
            curr_lang = ''
            if '_language' in request.session:
                curr_lang = request.session['_language']
            else:
                curr_lang = 'en'
            if request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang).exists():
                guide = request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang)
            else:
                guide = request.cur_app.guides.get(profile_type='', profile_level='')

        except UserGuide.DoesNotExist:
            messages.error(request, _('No user guide is available'))
            return redirect('home')

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

Спасибоочень много

ОБНОВЛЕНИЕ:

Я написал это, похоже, работает, но я не знаю, если это хороший способ:

from django.utils.safestring import mark_safe

def get(self, request):
    if request.user.is_anonymous:
        try:
            curr_lang = ''
            if '_language' in request.session:
                curr_lang = request.session['_language']
            else:
                curr_lang = 'en'
            guide = request.cur_app.guides.get(profile_type='', profile_level='', language=curr_lang)

        except UserGuide.DoesNotExist:
            try:
                guide = request.cur_app.guides.get(profile_type='', profile_level='')
                filename = str(guide.file)
                messages.error(request, mark_safe(_("No user guide is available on your " + curr_lang + " language. Please find the default userguide in : <a href='media/%s'>userguide</a>" % (filename))))
            except UserGuide.DoesNotExist:
                messages.error(request, _('No user guide is available'))
            return redirect('home')
...