如何在django上动态更改块的内容
How to change the contents of a block dynamically on django?
请参阅下面的固定代码
我正在使用django 1.8进行我的第一个网页项目。我的网页有一个部分,它由一个产品菜单和一个列组成,该列根据所选菜单项显示不同的视图。
起初,我尝试了一种方法,每个菜单按钮都分配了一个onclick-js函数,用于更改块的内容。我在想,然后我会把每个产品的html代码写到单独的文件中,在那里js函数会读取它。我做了部分工作,但感觉有点粗略。
我的第二种方法是基于使用django模板,但作为一个初学者,我遇到了一些错误——我不太清楚到底是什么问题。如果有人能指出我做错了什么,或者告诉我动态更改内容的正确方法,我将不胜感激。
我目前得到的错误:
http://127.0.0.1:8000/productmonitor/
NoReverseMatch at /productmonitor/
Reverse for 'product' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'productmonitor/(?P<product_name>[a-z]+)/$']
http://127.0.0.1:8000/productmonitor/
NoReverseMatch at /productmonitor/dualpol/
Reverse for 'product' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'productmonitor/(?P<product_name>[a-z]+)/$']
urls.py
# -*- coding: utf-8 -*-
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<product_name>[A-Za-z0-9'-'_]+)/$', views.product, name='product'),
url(r'^information/$', views.information, name='information'),
url(r'^casedatabase/$', views.casedatabase, name='casedatabase'),
url(r'^contact/$', views.contact, name='contact'),
]
views.py
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render
from django.views import generic
# Create your views here.
from .models import Product
def index(request, product_name='default'):
#template = 'productmonitor/index.html'
if product_name == 'dualpol':
template = 'productmonitor/base_productmonitor_dualpol.html'
if product_name == 'rhi':
template = 'productmonitor/base_productmonitor_rhi.html'
template = 'productmonitor/base_productmonitor.html'
test_context = {
'products' : Product.objects.all(),
}
return render(request, template, test_context)
def product(request, product_name='dualpol'):
if product_name == 'dualpol':
template = 'productmonitor/base_productmonitor_dualpol.html'
if product_name == 'rhi':
template = 'productmonitor/base_productmonitor_rhi.html'
test_context = {
'products' : Product.objects.all(),
}
return render(request, template, test_context)
base_productmonitor.html
{% extends "productmonitor/base.html" %}
{% block content %}
<div class="productSelectMenu">
<ul>
<p>Test</p>
{% for product in products %}
<li><a href="{% url 'productmonitor:product' 'dualpol' %}">{{ product.name }}<a/></li>
{% endfor %}
</ul>
</div>
{% block productcontent %}
<div id="productView" class="productView">
<p>Default productView content</p>
</div>
{% endblock %}
{% endblock %}
base_productmonitor_dualpol.html
{% extends "productmonitor/base_productmonitor.html" %}
{% block productcontent %}
<p>
dualpol
</p>
{% endblock %}
编辑:固定版本
urls.py
# -*- coding: utf-8 -*-
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^product/(?P<product_name>[a-z]+)/$', views.product, name='product'),
url(r'^information/$', views.information, name='information'),
url(r'^casedatabase/$', views.casedatabase, name='casedatabase'),
url(r'^contact/$', views.contact, name='contact'),
]
views.py
enter code here
from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render, redirect
from django.views import generic
# Create your views here.
from .models import Product
def index(request, product_name=''):
return redirect('productmonitor:product', product_name='dualpol')
def product(request, product_name):
if product_name == 'dualpol':
template = 'productmonitor/base_productmonitor_dualpol.html'
if product_name == 'rhi':
template = 'productmonitor/base_productmonitor_rhi.html'
test_context = {
'products' : Product.objects.all(),
}
return render(request, template, test_context)
def information(request):
template = 'productmonitor/base_information.html'
context = {}
return render(request, template, context)
def casedatabase(request):
template = 'productmonitor/base_case-database.html'
context = {}
return render(request, template, context)
def contact(request):
template = 'productmonitor/base_contact.html'
context = {}
return render(request, template, context)
base_productmonitor.html
{% extends "productmonitor/base.html" %}
{% block content %}
<div class="productSelectMenu">
<ul>
<li><a href="{% url 'productmonitor:product' 'dualpol' %}">Dual pol<a/></li>
<li><a href="{% url 'productmonitor:product' 'rhi' %}">Rhi<a/></li>
</ul>
</div>
{% block productcontent %}
<div id="productView" class="productView">
<p>Default productView content</p>
</div>
{% endblock %}
{% endblock %}
base_productmonitor_dualpol.html
{% extends "productmonitor/base_productmonitor.html" %}
{% block productcontent %}
<div id="productView" class="productView">
<p>
dualpol
</p>
</div>
{% endblock %}
我认为错误的意思是产品函数中的渲染器没有得到正确的<product_name>
。这表明它所拥有的参数(它正在尝试的<product_name>
)是零。因此,在你的产品功能中,你要做的是尝试并确保你真的得到了<product_name>
。
相关文章:
- django中动态形式的csrf令牌错误
- Django Fromset中动态添加的字段为空
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 为什么我可以动态使用 django 模板变量
- 动态 JQuery 视图在 django 中
- 使用用户输入动态转换数据(Highcharts,JavaScript,Django)
- 动态添加未发布的Django FormSet数据
- 模态中的 Django 形式:动态重定向和处理错误
- 如何为 Django 生成动态搜索表单
- 如何使用 Django 模板中的动态 DOM 元素通过 jquery 进行 Ajax 调用
- Django 在页面部分可用时动态加载它们
- 在 Django 中,根据视图名称动态加载一些 JavaScript 的更聪明的方法是什么(如果存在)
- 关于django模板中表单字段值的动态隐藏/取消隐藏选项卡
- 通过Javascript定位Django模型中的动态内容
- 如何在django上动态更改块的内容
- Django动态表单集不起作用
- Django新手-需要帮助隐藏动态构建的表的部分
- Django使用谷歌地图自动建议将表单动态添加到表单集
- 在django中动态更改单元格的颜色
- 包括模板与动态Django表单