django问题{%url'..'%}

问题描述 投票:0回答:2

我不确切地知道如何解释这一点,但我会尝试......一些奇怪的事情正在进行标签的链接...基本上当我链接<h1>标签或任何东西去另一个模板标签时,它不起作用......它确实改变了url扩展名,但它保留在同一个模板上...

我现在将向您展示文件...这是文件夹项目的树:

tube/
├── main
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   ├── views.py
├── manage.py
├── models.py
├── templates
│   ├── base.html
│   └── main
│       ├── details.html
│       └── main.html
└── tube
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    ├── views.py
    ├── wsgi.py

main / views.py:

class Main(TemplateView):
    template_name = 'main/main.html'

    def get_context_data(self, **kwargs):
        context = super(Main, self).get_context_data(**kwargs)
        test = Test.objects.all().order_by('ps_name')
        # for i in range(200):
        #     lines.append('Line %s' % (i + 1))
        paginator = Paginator(test, 20)
        page = self.request.GET.get('page')
        try:
            show_lines = paginator.page(page)
        except PageNotAnInteger:
            # If page is not an integer, deliver first page.
            show_lines = paginator.page(1)
        except EmptyPage:
            # If page is out of range (e.g. 9999), deliver last page of results.
            show_lines = paginator.page(paginator.num_pages)
        context['test'] = show_lines
        return context


def details(request, pk):
    ps = Test.objects.get(id=pk)
    print ps
    return render(request, 'main/details.html', {'test': ps})

正如您所看到的,我的第一个视图转到main.html,第二个视图转到details.html

main / urls.py:

urlpatterns = [
    url(r'$', views.Main.as_view(), name='main'),
    url(r'(?P<pk>\d+)/', views.details, name='details'),
]

这是我的templates / main / main.html:

{% extends 'base.html' %}
{% load staticfiles %}
{% load static %}
{% load bootstrap4 %}
{% block content %}
    <div class="container">
        <table class="table table-bordered">
            <thead>
            <tr>
                <th>Name</th>
                <th>Rank</th>
            </tr>
            </thead>
            <tbody>
            {% for ps in test %}
                <tr>
                    <td>
                        <a href="{% url 'main:details'  pk=ps.id %}">{{ ps.ps_name }}</a>
                    </td>
                    <td>{{ ps.ps_rank }}</td>
                </tr>
            {% endfor %}
            </tbody>
        </table>

        {% bootstrap_pagination test url="/test?page=1" size="small" %}
    </div>
{% endblock %}

这只是templates / main / details.html的测试部分:

<div class="container">
        <table class="table table-bordered">
            <thead>
            <tr>
                <th>Bio</th>
            </tr>
            </thead>
            <tbody>
            {% for ps in test %}
                <tr>
                    <td>{{ ps.bio }}</td>
                </tr>
            {% endfor %}
            </tbody>
        </table>
    </div>

所以我的问题是......当我点击main / main.html中的任何链接时,它没有显示main / details.html的内容,它显示了来自main / main.html的相同内容,但确实更改了网址推广。有谁知道为什么?其他项目的原因我没有这样的问题...它工作正常。

谢谢

版本:

Django==1.11.10
django-bootstrap4==0.0.6

UPDATE

更改网址扩展名:main / main.html位于https://example.com/main ....而main / details.html位于https://example.com/main/(pk.id) ....基本上当我点击https://example.com/main上的名字时,它会转到https://example.com/main/101...but页面不会更改

django python-2.7
2个回答
2
投票

你错过了主网址的锚点;目前它只是意味着“任何字符串结束”,这当然匹配一切。它应该是:

url(r'^$', ...

1
投票

你的urls应该如下,你缺少^

urlpatterns = [
    url(r'^$', views.Main.as_view(), name='main'),
    url(r'^(?P<pk>\d+)/$', views.details, name='details'),
]
© www.soinside.com 2019 - 2024. All rights reserved.