django 无法加载控制器到这里

qvtsj1bj  于 2022-12-01  发布在  Go
关注(0)|答案(2)|浏览(143)
templatetags : myapp_extras.py

from django import template

register = template.Library()

@register.simple_tag
def my_url(value,field_name,urlencode=None):
    url = '?{}={}'.format(field_name,value)
    if urlencode:
        querystring = urlencode.split('&')
        filtered_querystring = filter(lambda p:p.split('=')[0]!=field_name,querystring)
        encoded_querystring = '&'.join(filtered_querystring)
        url = '{}&{}'.format(url,encoded_querystring)

    return url

home.html 

{% load myapp_extras %}
.
.
.
<div class="pagination">
    <span class="step-links">
        {% if page_obj.has_previous %}
            <a href="{% my_url 1 'page' request.GET.urlencode%}">&laquo; first</a>
            <a href="{% my_url page_obj.previous_page_number 'page' request.GET.urlencode%}">previous</a>
        {% endif %}

        <span class="current">
            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
        </span>

        {% if page_obj.has_next %}
            <a href="{% my_url page_obj.next_page_number 'page' request.GET.urlencode%}">next</a>
            <a href="{% my_url page_obj.paginator.num_pages 'page' request.GET.urlencode%}">last &raquo;</a>
        {% endif %}
    </span>
</div>

settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'facligoapp'
]

views.py
def do_paginator(get_records_by_date,request):

    paginator = Paginator(get_records_by_date,10)
    page_number = request.GET.get('page', 1)
    try:
        page_obj  = paginator.get_page(page_number)
    except PageNotAnInteger:
        page_obj = paginator.page(1)
    except EmptyPage:
        page_obj = paginator.page(paginator.num_pages)
    return page_obj
:
:
        if new_records_check_box_status is None and error_records_check_box_status is None:
            get_records_by_date = Scrapper.objects.filter(start_time__date__range=(f_date, t_date))
            get_records_by_date = check_drop_down_status(get_records_by_date,drop_down_status)
            get_records_by_date = do_paginator(get_records_by_date,request)

根据我的模板标签,当我过滤数据时,url应该改变。但是url没有改变,模板标签也不工作。我在模板标签中也创建了init.py。有没有解决方案可以像模板标签一样改变url的结构?当我改变下一页时,url没有改变。

oiopk7p5

oiopk7p51#

而不是:

@register.simple_tag

试试这个:

@register.filter

并将其加载到模板中:

{% load filter_tags %}

注意:您必须init.py在templatags目录中创建空的www.example.com文件。
进行上述更改后,您需要在www.example.com文件中添加此标记settings.py:
在settings.py文件中:

'libraries':{
                'filter_tags': 'templatetags.filter',
            }

如果templatags目录位于应用程序中,则必须在库中添加该appname。

'libraries':{
                    'filter_tags': 'your_appanme.templatetags.filter',
                }

例如:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'libraries':{
                'filter_tags': 'templatetags.filter', #added here
            }
        },
    },
]
q3aa0525

q3aa05252#

如果创建新的templatag文件,则需要重新启动服务器以检测到该文件。

相关问题