相关疑难解决方法(0)

'module'没有属性'urlencode'

当我尝试遵循与Python编码相关的Python Wiki示例时:

>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()
Run Code Online (Sandbox Code Playgroud)

第二行引发错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'urlencode'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python urllib python-3.x

90
推荐指数
3
解决办法
10万
查看次数

django自定义模板标记中的访问请求

我的代码在myapp_extras.py中:

from django import template

register = template.Library()

@register.inclusion_tag('new/userinfo.html')
def address():
    address = request.session['address']
    return {'address':address}
Run Code Online (Sandbox Code Playgroud)

在'settings.py'中:

TEMPLATE_CONTEXT_PROCESSORS =(
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    'django.core.context_processors.request'
)
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

TemplateSyntaxError at /items/

Caught an exception while rendering: global name 'request' is not defined

Original Traceback (most recent call last):
  File "C:\Python25\lib\site-packages\django\template\debug.py", line 71, in render_node
    result = node.render(context)
  File "C:\Python25\lib\site-packages\django\template\__init__.py", line 915, in render
    dict = func(*args)
  File "C:\p4\projects\myproject\..\myproject\invoice\templatetags\myapp_extras.py", line 9, in address
    address = request.session['address']
NameError: global name 'request' is not defined …
Run Code Online (Sandbox Code Playgroud)

python django django-templates django-custom-tags

69
推荐指数
3
解决办法
5万
查看次数

对过滤器进行分页

我有一个过滤器,其中包含汽车品牌和型号的相关下拉列表。由于我不想在一页上显示所有内容,因此我添加了分页器。问题是过滤器工作正常,但无法在页面中保留

当过滤器处于活动状态时,网址看起来像

/cars/?manufacture=2&model=2 如果我转到下一页,我得到的只是/cars/?page=2

我想要类似的东西/cars/?manufacture=2&model=2?page=2

如果我打印{{ posts|length }}它确实会返回正在过滤的正确数量的项目,因此那里没有问题

我认为问题出在模板中的下一个和上一个按钮,因为它们不会传递下一页以外的任何参数。我如何将过滤器带入分页器。

看法

def allCarsView(request):

    model = Post
    
    myFilter = carFilter(request.GET, queryset=Post.objects.all())
    posts = myFilter.qs
    
    page = request.GET.get('page', 1)
    paginator = Paginator(posts.order_by('date_posted'), 2)
    page_obj = paginator.get_page(page)
    page_range = paginator.get_elided_page_range(number=page)
    
    context = {
        'posts':posts, 'myFilter':myFilter, 'page_range': page_range, 
        'page': page, 'paginator': paginator, 'page_obj': page_obj
    }
    return render(request, 'blog/cars.html', context)    
Run Code Online (Sandbox Code Playgroud)

html 分页器

<nav aria-label="Page navigation example " class="paginator">
<nav aria-label="Page navigation example " class="paginator">
    <ul class="pagination justify-content-center">
        <li class="page-item">
            {% if page_obj.has_previous …
Run Code Online (Sandbox Code Playgroud)

django django-filter django-pagination

6
推荐指数
1
解决办法
517
查看次数

覆盖 django 管理分页以及 url 参数

我想为我的管理面板实现自定义分页。

我的网址如下所示: http://localhost:8000/admin/items/?group_id=20

group_id在此 URL 上,我做了一些工作来使用参数(通过覆盖方法)过滤结果get_changelist

页面结果是正确的,问题是我的分页结果是这样的http://localhost:8000/admin/items/?p=1,而我希望 URL 是这样的http://localhost:8000/admin/items/?group_id=20&p=1并保留参数。

基本上我想要与How to paginate Django with other getvariables?相同的结果。但使用 Django 管理。

如何将参数与分页一起保留?

我尝试过覆盖 pagination.html 文件,但没有成功。

谢谢。

编辑

我尝试过覆盖 pagination.html 但request.GET.items仍然是空的(即使我的设置文件配置良好)

{% load admin_list %}
{% load i18n %}
{% load content_extras %}
<p class="paginator">
{% if pagination_required %}
    {% for i in page_range %}
        <a href="?p={{ i }}{% for key, value in request.GET.items %}{% if key != 'p' %}&{{ key }}={{ value }}{% …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-admin django-rest-framework

5
推荐指数
1
解决办法
2144
查看次数

Django - 使用多个 GET 参数在模板中分页

我正在使用 Django Paginator,并且希望有多个可用的获取参数,例如: page=1 sort_by=price

但是,在我的模板标签中,我有:

Showing items sorted by {{ SORT_PARAM }}.
Showing {{ ITEMS_PER_PAGE }} items per page.

{% if has_prev %}
<a href="?page={{ prev_page }}">Previous</a> |
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但是,这不会保留其他 GET 变量。我的意思是,如果我正在观看

page/?page=1&sort_by=price
Run Code Online (Sandbox Code Playgroud)

我单击上面模板片段中的链接,我将转到

page=2
Run Code Online (Sandbox Code Playgroud)

代替

page=2&sort_by=price
Run Code Online (Sandbox Code Playgroud)

我的意思是,a href 不保留其他 GET 参数。

一种解决方案是我可以在 a href 中键入所有可能的 GET 参数,例如

<a href="?page={{ prev_page }}&items_per_page={{ ITEMS_PER_PAGE }}&sort_param={{ SORT_PARAM }}">Previous</a>
Run Code Online (Sandbox Code Playgroud)

但我想在浏览中添加的参数越多,这将变得越难扩展。我猜应该有一种自动化的方法来获取所有 GET 参数,然后传递这些参数和更多参数?

python django django-templates

4
推荐指数
1
解决办法
3295
查看次数