Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Не наследуются шаблоны. В чем проблема? [RSS Feed]

#1 Фев. 19, 2015 18:26:26

legotin
Зарегистрирован: 2015-02-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

Есть базовый ХТМЛ:

<!DOCTYPE html>
<html>
<head>
	<title>werwffw</title>
	
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head>
<body>
{% block text %}
один
{% endblock %}
</body>
</html>

Есть дочерний:
{% extends "templates/base.html" %}
{% block text %}
два
{% endblock %}
Захожу на страницу пишет “один”, хотя должно “два”.

url.py:
# -*- coding:utf-8 -*-
from django.conf.urls import *
from mysite.views import koren 
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
     (r'^$', koren),
     (r'^admin/', include(admin.site.urls)),
)

views.py:
from django.shortcuts import render_to_response
from django.http import HttpResponse, Http404
from django.template import RequestContext
def koren(request):
	return render_to_response('base.html')


Отредактировано legotin (Фев. 19, 2015 18:28:41)

Офлайн

#2 Фев. 19, 2015 18:50:31

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

def koren(request):
	return render_to_response('child_template.html')  # <-- тут дочерний шаблон

Офлайн

#3 Фев. 19, 2015 20:37:09

legotin
Зарегистрирован: 2015-02-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?


botinag
Спасибо!
А что делать если два дочерних шаблона?
def koren(request):
	return render_to_response('child_template.html', 'child_template_2')

Через зяпятую не работает.

Офлайн

#4 Фев. 19, 2015 20:49:54

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

А какая логика? зачем необходимо два шаблона?



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#5 Фев. 19, 2015 21:11:29

legotin
Зарегистрирован: 2015-02-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

ajib6ept
А какая логика? зачем необходимо два шаблона?
Объеденить форму и вывод из бд на одной странице
views.py:
# -*- coding:utf-8 -*-
from django.template import RequestContext
from django.core.context_processors import csrf
from django.shortcuts import render_to_response
from django.http import HttpResponse, Http404
from mysite.forms import VvodForm
from mysite.models import Vvod, Vivod
import datetime
def vvodfun(request):
	
	c = {}
	if request.method == 'POST':
		form = VvodForm(request.POST)
		c.update(csrf(request))
		if form.is_valid():
			form.save()
			
	else:
		form = VvodForm()
		
	c = RequestContext(request, {'form': form})
	return render_to_response('form_vvoda.html', c)
def vivodfun(request):
	vivod_list = Vivod.objects.all()
	return render_to_response('vivod.html', {'vivod_list': vivod_list})

models.py:
from django.db import models
class Vvod(models.Model):
	primervvod = models.CharField(max_length=30)
	def __unicode__(self):
		return self.primervvod
class Vivod(models.Model):
	primervivod = models.CharField(max_length=30)
	def __unicode__(self):
		return self.primervivod

forms.py:
from django.forms import ModelForm
from mysite.models import Vvod
class VvodForm(ModelForm):
	class Meta:
		model = Vvod
		fields = ['primervvod']

urls.py
from django.conf.urls import *
from mysite.views import vvodfun, koren, vivodfun 
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    (r'^$', koren),
    (r'^admin/', include(admin.site.urls)),
    (r'^vvod/$', vvodfun),
    (r'^vivod/$', vivodfun),
)

Шаблоны:
Родитель:
<!DOCTYPE html>
<html>
<head>
	<title>werwffw</title>
	
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
</head>
<body>
{% block content %}
{% endblock%}
{% block form %}
{% endblock %}
</body>
</html>
Первый дочерний:
{% extends "base.html" %}
{% block content%}
	{% for v in vivod_list %}
	<div>{{ v }}</div>
	{% endfor %}
{% endblock %}

Второй:
{% extends "base.html" %}
{% block form %}
	<form action="" method="post">
	{% csrf_token %}
	
	{{ form }}
	<input type="submit" value="Отправить">
	</form>
{% endblock %}

Отредактировано legotin (Фев. 19, 2015 21:14:32)

Офлайн

#6 Фев. 19, 2015 21:28:39

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

Надо контекст vvodfun расширить и добавить в него Vivod.objects.all()
Советую пройти учебник http://djbook.ru/rel1.7/intro/tutorial01.html и понимание придет, что и как.



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#7 Фев. 19, 2015 21:42:52

legotin
Зарегистрирован: 2015-02-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Не наследуются шаблоны. В чем проблема?

ajib6ept
Советую пройти учебник http://djbook.ru/rel1.7/intro/tutorial01.html и понимание придет, что и как.
Толсто.

Офлайн

  • Начало
  • » Django
  • » Не наследуются шаблоны. В чем проблема?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version