Проблема с отображением HTML-файла в приложении Django

#python #html #django #mongoengine

#python #HTML #django #mongoengine

Вопрос:

В моем views.py файле у меня есть это в настоящее время

 from django.contrib import messages
from django.http import HttpResponse 
from django.core.urlresolvers import reverse
from django.shortcuts import redirect, get_object_or_404, render
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic.base import View, TemplateView
from models import *
from forms import *

class test(TemplateView):
    def test(request):
        return HttpResponse("test")

    def get_template_names(self):
        return ["myapp/test.html"]
  

urls.py

 from django.conf.urls import patterns, url
from views import test

urlpatterns = patterns('',
    url(r'$', test.as_view(), name='test'),
)
  

test.html

 {% extends "index.html" %}

{% block content %}
   <P> HELLO </P>
{% endblock %}
  

За исключением того, что ничего не отображается при загрузке сайта!

The index.html файл загружается нормально, так как загружаемый мной HTML-файл расширяет его. Но когда я нажимаю кнопку, которая связана с URL-адресом «test» в urls.py ничего не обновляется. The text.html файл просто содержит текст «hello world».

Комментарии:

1. проверьте файлы журналов сервера.

2. Ничего плохого, проверка файла error_log в /private/var/log/apache2

3. Что делает index.html как выглядит? Есть ли у него блок «содержимого»?

4. Да, я добавил html-файл в основной пост.

Ответ №1:

В вашем urls.py случае вам необходимо правильно импортировать свое представление:

 from django.conf.urls import patterns, url
from yourapp.views import test

urlpatterns = patterns('',
    url(r'$', test.as_view(), name='test'),
)
  

В ваших представлениях вам нужно исправить свой класс, таким образом:

 class test(TemplateView):
    template_name = 'myapp/test.html'
  

Вы не должны использовать get_template_names

Если это действительно все, что вы пытаетесь сделать (то есть отобразить шаблон), тогда вы можете импортировать TemplateView непосредственно в свой urls.py:

 from django.conf.urls import patterns, url
# from yourapp.views import test
from django.views.generic.base import TemplateView

urlpatterns = patterns('',
    url(r'$', TemplateView.as_view(template_name='myapp/test.html'), name='test'),
)
  

Ответ №2:

Попробуйте написать свое представление следующим образом:

 class Test(TemplateView):
    template_name = "myapp/test.html"
  

Это рекомендуемый способ задать имя шаблона.

Комментарии:

1. Не работает. Нормально ли, что если в urls.py файл, url(r’^newpage/’, Test.as_view()), если я создам новую страницу таким образом, она выдает мне страницу с ошибкой сервера 500? Когда я получаю доступ к этой странице непосредственно в браузере после. Потому что теперь я чувствую, что мой проект django не «входит» в views.py досье. Что-то блокирует его между urls.py и тот views.py …

2. и что говорит ошибка? у вас есть DEBUG=True?

3. Да, но ошибки нет, просто пусто. Даже внутренняя ошибка сервера. Извините за поздний ответ, интернет здесь отключается у интернет-провайдера.

4. О, сначала я не понял, на что вы ссылались. для страницы с ошибкой server 500 я получаю следующее: «test не является допустимым ObjectId», когда я устанавливаю debug в true.

5. И дает ли это вам обратную трассировку?