Заполните шаблон данными о загрузке страницы - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь заполнить html-страницу сведениями о профиле пользователя при загрузке страницы.В документе Django есть метод get_context_data() в TemplateView, когда я использую его для отображения данных на html-странице, я получаю следующее исключение

TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: app/profile.html

Вот мой код:

urls.py

url(r'^profile/', views.ProfileDetailView.as_view(), name='profile'),

views.py

class ProfileDetailView(TemplateView):
    template_name = "appName/profile.html"
    def get_context_data(self, **kwargs):
        if 'user_name' in self.request.session:          
            username = self.request.session['user_name']                        
            return render_to_response('appName:profile', {'username': username})

Вот как я использую на HTML-странице

profile.html

<input type="text" class="form-control" placeholder="User name" id="usernameDisplay" name="usernameDisplay" readonly  value="{{ username }}">

Где я ошибаюсь?

Edit1:

settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

PS: Все остальные шаблоны работают нормально, проблема заключается только в этом, который я пытаюсь заполнить данными при загрузке страницы.

Редактировать 2: Возникла проблема с именами, исключение составляет:

 TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: appName:profile

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Похоже, ваше приложение ищет profile.html в папке app.Вот как должен выглядеть каталог.

В вашей папке appName создайте папку templates и создайте в ней папку с вашим именем приложения.Я уверен, что эта папка называется app.Исправьте это до appName.

[projectname]/                  <- project root
├── [projectname]               <- Django root
│  
├── appName/
|       | 
|       |── templates/
|                ├── appName
|                       └── Profile.html
|                  
│     
├── manage.py
0 голосов
/ 20 февраля 2019

пожалуйста, проверьте ваши TEMPLATES_DIRS правильно

DIRS определяет список каталогов, в которых движок должен искать исходные файлы шаблона, в порядке поиска.

в вашем settings.py

TEMPLATES = [
    {

      'DIRS': [os.path.join(BASE_DIR, 'templates')],

    },
]

надеюсь, что это поможет

...