Так что у меня есть тема.
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.html и f_topic.html, потому что используется один и тот же topic_id.
Я хочу, чтобы, если тема была создана в 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)'
topic.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>
Я получаю ту же ошибку NoReverseMatch в / themes / Reverse для 'topic' с аргументами '(10,' ')' не найдено.Попробован 1 шаблон (ов): ['themes / (? P [0-9] +) / (? P [^ /] +) / $']
Вот файл themes.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 content%}