Создайте ссылку на тему и создайте ее на home.html. - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь зализать свои гиперссылки.Я создал доску Django (home.html):

В настоящее время у меня есть:

http://127.0.0.1:8000/request/2/

Но я хочу: http://127.0.0.1:8000/request/hallo-das-ist-ein-test-9/

enter image description here

  {% for topic in topics %}
    <tr>
      <td>{{ topic.slug }}</td>
       <td><a href="{% url 'topic_posts' topic.pk %}">{{ topic.subject }}</a></td>
      <td>{{ topic.starter.username }}</td>
      <td>0</td>
      <td>0</td>
      <td>{{ topic.last_updated }}</td>
    </tr>
  {% endfor %}

и

class Topic(models.Model):
    subject = models.CharField(max_length=255)
    category = models.CharField(max_length=255, null=True)
    last_updated = models.DateTimeField(auto_now_add=True)
    starter = models.ForeignKey(User, on_delete=models.CASCADE, 
related_name='topics')
    slug = models.SlugField(unique=True)

def save(self, *args, **kwargs):
    self.slug = slugify(self.subject)
    super(Topic, self).save(*args, **kwargs)

Как видите, слизни были созданы.(Первый столбец = {{topic.slug}})

Как я могу создать ссылку на слуги и связать их с гиперссылками в моем потоке?(например, «Привет, тест: 9»)

Мой текущий код в views.py:

def home(request):
    topics = Topic.objects.all()
    return render(request, 'home.html', {'topics': topics})


def topic_posts(request, topic_pk):
    topic = get_object_or_404(Topic, pk=topic_pk)
    return render(request, 'topic_posts.html', {'topic': topic})

Мой текущий url.py:

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^admin/', admin.site.urls),
    url(r'^new/$', views.new_topic, name='new_topic'),
    url(r'^request/(?P<topic_pk>\d+)/$', views.topic_posts, 
name='topic_posts'),
    url(r'^request/(?P<topic_pk>\d+)/reply/$', views.reply_topic, 
name='reply_topic'),

]

Я уже пробовал разные подходы, такие как:

def home(request):
    topics = Topic.objects.all()
    slug = Topic.slug
    return render(request, 'home.html', {'topics': topics, 'slug': slug})


def topic_posts(request, slug):
    slug = get_object_or_404(Topic, pk=slug)
    return render(request, 'topic_posts.html', {'slug': slug})

home.html:

<td><a href="{% url 'topic_posts' topic.slug %}">{{ topic.subject }}</a></td>

url.py:

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^admin/', admin.site.urls),
    url(r'^new/$', views.new_topic, name='new_topic'),
    url(r'^request/(?P<slug>[-\w\d]+)/$', views.topic_posts, 
 name='topic_posts'),
    url(r'^request/(?P<topic_pk>\d+)/reply/$', views.reply_topic, 
 name='reply_topic'),
]

ЧтоЯ здесь не так делаю ...?

1 Ответ

0 голосов
/ 28 октября 2018

Есть несколько изменений, необходимых для вашего ожидаемого поведения.

В таблице изменения:

  <a href="{% url 'topic_posts' topic.pk %}">

до

 <a href="{% url 'topic_posts' slug=topic.slug %}">

В представлениях обновите код следующим образом:

def topic_posts(request, slug):
    topic = get_object_or_404(Topic, slug=slug)
    ...
...