#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. И дает ли это вам обратную трассировку?