Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 面包屑url-与x27相反';没有找到'';不是有效的视图函数或模式名称_Django_Django Templates - Fatal编程技术网

Django 面包屑url-与x27相反';没有找到'';不是有效的视图函数或模式名称

Django 面包屑url-与x27相反';没有找到'';不是有效的视图函数或模式名称,django,django-templates,Django,Django Templates,我试图通过这个例子来做面包屑,但是对于“未找到”有错误相反不是有效的视图函数或模式名称。我所做的一切都与本例中的一样。但我做错了什么 此行出错{%breadcrumb\u url'Home'产品\u列表%} url.py app_name = 'shop' urlpatterns = [ url(r'^$', views.product_list, name='product_list'), url(r'^show/(?P<slug>[-\w]+)$', views.

我试图通过这个例子来做面包屑,但是对于“未找到”有错误
相反不是有效的视图函数或模式名称。
我所做的一切都与本例中的一样。但我做错了什么


此行出错
{%breadcrumb\u url'Home'产品\u列表%}

url.py

app_name = 'shop'
urlpatterns = [
    url(r'^$', views.product_list, name='product_list'),
    url(r'^show/(?P<slug>[-\w]+)$', views.product_show, name='product_show'),
    url(r'^(?P<category>[-\w]+)$', views.product_list, name='lst_by_ctgry'),
    url(r'^(?P<category>[-\w]+)/(?P<subcategory>[-\w]+)$', views.product_list, name='lst_by_subctgry'),
    url(r'^(?P<category>[-\w]+)/(?P<subcategory>[-\w]+)/(?P<kind>[-\w]+)$', views.product_list, name='lst_by_knds'),
]
from django import template
from django.template import loader, Node, Variable
from django.utils.encoding import smart_str, smart_text
from django.template.defaulttags import url
from django.template import VariableDoesNotExist

register = template.Library()

@register.tag
def breadcrumb(parser, token):
    """
    Renders the breadcrumb.
    Examples:
        {% breadcrumb "Title of breadcrumb" url_var %}
        {% breadcrumb context_var  url_var %}
        {% breadcrumb "Just the title" %}
        {% breadcrumb just_context_var %}

    Parameters:
    -First parameter is the title of the crumb,
    -Second (optional) parameter is the url variable to link to, produced by url tag, i.e.:
        {% url person_detail object.id as person_url %}
        then:
        {% breadcrumb person.name person_url %}

    @author Andriy Drozdyuk
    """
    return BreadcrumbNode(token.split_contents()[1:])


@register.tag
def breadcrumb_url(parser, token):
    """
    Same as breadcrumb
    but instead of url context variable takes in all the
    arguments URL tag takes.
        {% breadcrumb "Title of breadcrumb" person_detail person.id %}
        {% breadcrumb person.name person_detail person.id %}
    """

    bits = token.split_contents()
    if len(bits)==2:
        return breadcrumb(parser, token)

    # Extract our extra title parameter
    title = bits.pop(1)
    token.contents = ' '.join(bits)

    url_node = url(parser, token)

    return UrlBreadcrumbNode(title, url_node)


class BreadcrumbNode(Node):
    def __init__(self, vars):
        """
        First var is title, second var is url context variable
        """
        self.vars = map(Variable,vars)

    def render(self, context):
        title = self.vars[0].var

        if title.find("'")==-1 and title.find('"')==-1:
            try:
                val = self.vars[0]
                title = val.resolve(context)
            except:
                title = ''

        else:
            title=title.strip("'").strip('"')
            title=smart_text(title)

        url = None

        if len(self.vars)>1:
            val = self.vars[1]
            try:
                url = val.resolve(context)
            except VariableDoesNotExist:
                print('URL does not exist', val)
                url = None

        return create_crumb(title, url)


class UrlBreadcrumbNode(Node):
    def __init__(self, title, url_node):
        self.title = Variable(title)
        self.url_node = url_node

    def render(self, context):
        title = self.title.var

        if title.find("'")==-1 and title.find('"')==-1:
            try:
                val = self.title
                title = val.resolve(context)
            except:
                title = ''
        else:
            title=title.strip("'").strip('"')
            title=smart_text(title)

        url = self.url_node.render(context)
        return create_crumb(title, url)


def create_crumb(title, url=None):
    """
    Helper function
    """
    crumb = """<span class="breadcrumbs-arrow">""" \
            """<img src="#" alt="Arrow">""" \
            """</span>"""
    if url:
        crumb = "%s<a href='%s'>%s</a>" % (crumb, url, title)
    else:
        crumb = "%s&nbsp;&nbsp;%s" % (crumb, title)

    return crumb
app_name='shop'
URL模式=[
url(r'^$',views.product_list,name='product_list'),
url(r“^show/(?P[-\w]+)$”,views.product\u show,name='product\u show'),
url(r'^(?P[-\w]+)$',views.product_list,name='lst_by_ctgry'),
url(r'^(?P[-\w]+)/(?P[-\w]+)$”,views.product_list,name='lst_by_subctgry'),
url(r'^(?P[-\w]+)/(?P[-\w]+)/(?P[-\w]+)$”,views.product_列表,name='lst_by_knds'),
]
base.html

{% load breadcrumbs %}
<!DOCTYPE html>
<html>
    <head>
        <title>Shop</title>
        <meta charset="utf-8">
    </head>

    <body>
        {% block breadcrumbs %}
            {% breadcrumb_url 'Home' product_list %}
        {% endblock %}

        <div class="container">
            {% block content %} {% endblock %}
        </div>
    </body>
</html>
{%load breadcrumbs%}
商店
{%block breadcrumbs%}
{%breadcrumb_url'Home'产品_列表%}
{%endblock%}
{%block content%}{%endblock%}
面包屑.py

app_name = 'shop'
urlpatterns = [
    url(r'^$', views.product_list, name='product_list'),
    url(r'^show/(?P<slug>[-\w]+)$', views.product_show, name='product_show'),
    url(r'^(?P<category>[-\w]+)$', views.product_list, name='lst_by_ctgry'),
    url(r'^(?P<category>[-\w]+)/(?P<subcategory>[-\w]+)$', views.product_list, name='lst_by_subctgry'),
    url(r'^(?P<category>[-\w]+)/(?P<subcategory>[-\w]+)/(?P<kind>[-\w]+)$', views.product_list, name='lst_by_knds'),
]
from django import template
from django.template import loader, Node, Variable
from django.utils.encoding import smart_str, smart_text
from django.template.defaulttags import url
from django.template import VariableDoesNotExist

register = template.Library()

@register.tag
def breadcrumb(parser, token):
    """
    Renders the breadcrumb.
    Examples:
        {% breadcrumb "Title of breadcrumb" url_var %}
        {% breadcrumb context_var  url_var %}
        {% breadcrumb "Just the title" %}
        {% breadcrumb just_context_var %}

    Parameters:
    -First parameter is the title of the crumb,
    -Second (optional) parameter is the url variable to link to, produced by url tag, i.e.:
        {% url person_detail object.id as person_url %}
        then:
        {% breadcrumb person.name person_url %}

    @author Andriy Drozdyuk
    """
    return BreadcrumbNode(token.split_contents()[1:])


@register.tag
def breadcrumb_url(parser, token):
    """
    Same as breadcrumb
    but instead of url context variable takes in all the
    arguments URL tag takes.
        {% breadcrumb "Title of breadcrumb" person_detail person.id %}
        {% breadcrumb person.name person_detail person.id %}
    """

    bits = token.split_contents()
    if len(bits)==2:
        return breadcrumb(parser, token)

    # Extract our extra title parameter
    title = bits.pop(1)
    token.contents = ' '.join(bits)

    url_node = url(parser, token)

    return UrlBreadcrumbNode(title, url_node)


class BreadcrumbNode(Node):
    def __init__(self, vars):
        """
        First var is title, second var is url context variable
        """
        self.vars = map(Variable,vars)

    def render(self, context):
        title = self.vars[0].var

        if title.find("'")==-1 and title.find('"')==-1:
            try:
                val = self.vars[0]
                title = val.resolve(context)
            except:
                title = ''

        else:
            title=title.strip("'").strip('"')
            title=smart_text(title)

        url = None

        if len(self.vars)>1:
            val = self.vars[1]
            try:
                url = val.resolve(context)
            except VariableDoesNotExist:
                print('URL does not exist', val)
                url = None

        return create_crumb(title, url)


class UrlBreadcrumbNode(Node):
    def __init__(self, title, url_node):
        self.title = Variable(title)
        self.url_node = url_node

    def render(self, context):
        title = self.title.var

        if title.find("'")==-1 and title.find('"')==-1:
            try:
                val = self.title
                title = val.resolve(context)
            except:
                title = ''
        else:
            title=title.strip("'").strip('"')
            title=smart_text(title)

        url = self.url_node.render(context)
        return create_crumb(title, url)


def create_crumb(title, url=None):
    """
    Helper function
    """
    crumb = """<span class="breadcrumbs-arrow">""" \
            """<img src="#" alt="Arrow">""" \
            """</span>"""
    if url:
        crumb = "%s<a href='%s'>%s</a>" % (crumb, url, title)
    else:
        crumb = "%s&nbsp;&nbsp;%s" % (crumb, title)

    return crumb
来自django导入模板的

从django.template导入加载程序、节点、变量
从django.utils.encoding导入smart\u str、smart\u text
从django.template.defaulttags导入url
从django.template导入variabledesnotexist
register=template.Library()
@register.tag
def面包屑(解析器、令牌):
"""
渲染面包屑。
示例:
{%breadcrumb“breadcrumb的标题”url_var%}
{%breadcrumb context_var url_var%}
{%breadcrumb“只是标题”%}
{%breadcrumb just_context_var%}
参数:
-第一个参数是面包屑的名称,
-第二个(可选)参数是要链接到的url变量,由url标记生成,即:
{%url person\u detail object.id作为person\u url%}
然后:
{%breadcrumb person.name person\u url%}
@作家安德烈·德罗兹杜克
"""
返回面包屑节点(token.split_contents()[1:]
@register.tag
def breadcrumb_url(解析器、令牌):
"""
和面包屑一样
但是代替url的上下文变量接受所有
URL标记接受的参数。
{%breadcrumb“面包屑标题”person\u detail person.id%}
{%breadcrumb person.name person\u detail person.id%}
"""
位=标记。拆分内容()
如果len(位)==2:
返回面包屑(解析器、令牌)
#提取我们的额外标题参数
title=bit.pop(1)
token.contents=''.join(位)
url\u node=url(解析器、令牌)
返回UrlBreadcrumbNode(标题、url\u节点)
类面包屑节点(节点):
定义初始化(自,变量):
"""
第一个变量是title,第二个变量是url上下文变量
"""
self.vars=map(变量,vars)
def呈现(自身、上下文):
title=self.vars[0].var
如果title.find(“”)=-1和title.find(“”)=-1:
尝试:
val=self.vars[0]
title=val.resolve(上下文)
除:
标题=“”
其他:
title=title.strip(“”)。strip(“”)
标题=智能文本(标题)
url=无
如果len(自变量)>1:
val=自变量[1]
尝试:
url=val.resolve(上下文)
除VariableDoesNotExist外:
打印('URL不存在',val)
url=无
返回create_crump(标题、url)
类UrlBreadcrumbNode(节点):
定义初始化(自我、标题、url节点):
self.title=变量(title)
self.url\u node=url\u node
def呈现(自身、上下文):
title=self.title.var
如果title.find(“”)=-1和title.find(“”)=-1:
尝试:
val=self.title
title=val.resolve(上下文)
除:
标题=“”
其他:
title=title.strip(“”)。strip(“”)
标题=智能文本(标题)
url=self.url\u node.render(上下文)
返回create_crump(标题、url)
def create_CREAM(标题,url=None):
"""
辅助函数
"""
面包屑=“”“\
"""""" \
""""""
如果url为:
crump=“%s”%(crump、url、标题)
其他:
碎屑=“%s%s”%(碎屑,标题)
返回面包屑

请帮帮我。谢谢

当您指定
{%breadcrumb\u url'Home'product\u list%}
时,它假定
product\u list
是一个变量。相反,您希望用引号将其括起来,表示它是URL的名称

breadcrumb\u url
采用标题,后跟与
url
相同的参数。既然你愿意

{% url 'shop:product_list' %}
面包屑url变为

{% breadcrumb_url 'Home' 'shop:product_list' %}

{%breadcrumb\u url“Home”商店:产品列表“%}
对我有用,谢谢!)