【发布时间】:2018-12-01 00:25:35
【问题描述】:
所以我有一个主题。
class Topic(models.Model):
topic_choices = (
('t_topic', 't_topic',),
('f_topic', 'f_topic',)
)
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
type = models.CharField(max_length=100, choices=topic_choices)
def __str__(self):
return self.text
根据创建日期检索和显示主题。
def topics(request):
"""Show all topics """
topics = Topic.objects.order_by('date_added')
context = {'topics': topics}
return render(request, 'learning_logs/topics.html', context)
我想做的是根据创建主题的网页以某种方式区分主题。
然后我希望在同一个网页上显示相同的主题。
正如您在下面看到的那样。由于使用了相同的 topic_id,因此 topic.html 和 f_topic.html 上显示了相同的主题。
我想拥有它,如果主题是在 topic.html 上创建的,那么它会显示在 topic.html 上。如果它是在 f_topic.html 上创建的,那么它会显示在 f_topic.html 上。
def topic(request, topic_id, type):
topic = Topic.objects.get(id=topic_id, type='t_topic')
entries = topic.entry_set.order_by('-date_added')
images = Image.objects.filter(imgtopic__in=entries)
context = {'topic': topic, 'entries': entries, 'images': images}
return render(request, 'learning_logs/topic.html', context)
def f_topic(request, topic_id):
topic = Topic.objects.get(id = topic_id)
entries = topic.entry_set.order_by('-date_added')
images = Image.objects.filter(imgtopic__in = entries)
context = {'topic': topic, 'entries': entries, 'images': images}
return render(request, 'learning_logs/f_topic.html', context)
主题如何保存为 t_type
def new_topic(request):
if request.method != 'POST':
#No data submitted; create a blank form.
form = TopicForm()
if form.is_valid():
new_topic = form.save(commit = False)
new_topic.type = 't_topic'
new_topic.owner = request.user
new_topic.save()
form.save()
return HttpResponseRedirect(reverse('learning_logs:topics'))
else:
form = TopicForm(request.POST)
context = {'form': form}
return render(request, 'learning_logs/new_topic.html', context)'
主题.html
{% extends 'learning_logs/base.html' %}
{% block content %}
<div class = 'topic-heading'>
<p>TOPIC : {{topic}}</p>
</div>
<div class = 'topic-container'>
{%include 'learning_logs/text.html'%}
</div>
我在 /topics/ 处收到相同的 NoReverseMatch 错误 未找到带有参数“(10,”)的“主题”的反向。尝试了 1 种模式:['topics/(?P[0-9]+)/(?P[^/]+)/$']
这里是应该显示主题的topics.html。
{% extends "learning_logs/base.html" %}
{% block content %}
<div class = 'topics-1'>
<h1> Topics: </h1>
<ul>
{% for topic in topics %}
<li>
<a href = "{% url 'learning_logs:topic' topic.id topic.type%}">[] {{topic}}</a>
</li>
{% empty %}
<li> No topics have been added yet. </li>
{% endfor %}
</ul>
</div>
<a href = "{% url 'learning_logs:new_topic' %}"> Add a new topic :</a>
{% endblock 内容 %}
【问题讨论】:
-
你现在遇到了什么问题?您还应该发布主题页面的 html。
-
相同的错误 NoReverseMatch 在 /topics/ Reverse for 'topic' 没有找到参数 '(10, '')'。尝试了 1 种模式:['topics/(?P
[0-9]+)/(?P [^/]+)/$'] -
该错误何时显示?当您尝试访问 topic.html 时?当您转到显示错误的页面时,您单击的链接是什么?你确定有问题的对象有一个保存在数据库中的类型吗?
-
当我只想显示主题时发生错误。因此,如果我创建一个主题,它应该列在一个名为 topic.html 的模板中。然后如果单击特定主题,则应打开一个名为 topic.html 的新模板,其内容应显示在那里。我不确定如何检查数据库,我假设是通过 shell 对吗?
-
所以它存储在数据库中 .. print(topic.id, topic, topic.type) ... 1 John Connor t_topic 9 简单 t_topic 10 新的一个 11 john 12 kkkkk 13 oiojoijioj 14 ppppppp 15 pppoko t_topic 16 plplplplp t_topic 17 okokook t_topic 18 gucci t_topic 19 pkpkpkppk t_topic 20 okokokokokokpopoppopo t_topic 21 kokokokok t_topic 22 okkoko t_topic