我不确切地知道如何解释这一点,但我会尝试......一些奇怪的事情正在进行标签的链接...基本上当我链接<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页面不会更改
你错过了主网址的锚点;目前它只是意味着“任何字符串结束”,这当然匹配一切。它应该是:
url(r'^$', ...
你的urls
应该如下,你缺少^
urlpatterns = [
url(r'^$', views.Main.as_view(), name='main'),
url(r'^(?P<pk>\d+)/$', views.details, name='details'),
]