Найти - Пользователи
Полная версия: Не наследуются шаблоны. В чем проблема?
Начало » Django » Не наследуются шаблоны. В чем проблема?
1
legotin
Есть базовый ХТМЛ:
<!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')


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

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

Через зяпятую не работает.
ajib6ept
А какая логика? зачем необходимо два шаблона?
legotin
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 %}
ajib6ept
Надо контекст vvodfun расширить и добавить в него Vivod.objects.all()
Советую пройти учебник http://djbook.ru/rel1.7/intro/tutorial01.html и понимание придет, что и как.
legotin
ajib6ept
Советую пройти учебник http://djbook.ru/rel1.7/intro/tutorial01.html и понимание придет, что и как.
Толсто.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB