【问题标题】:Django using URL dispatcherDjango 使用 URL 调度程序
【发布时间】:2020-10-18 08:03:27
【问题描述】:

我有一个星座网站,我想创建一个博客,我创建了一个名为 Bloglist.html 的 HTML 文件,其中列出了博客的图片和名称,然后我创建了 Blogdetail.html,其中已经定义了一个特定块(body_Text,作者 ..)。这就是我想要链接到 URL 调度程序的全部内容。但做不到,谁能帮忙?

url.py

urlpatterns = [
    path('',Home,name= "Home"),
    path("blog/<slug:slug>/",blog_list, name="blog_list"),
]

Models.py

class Blogmodel(models.Model):
    Title = models.TextField(blank=True, null=True)
    image = models.ImageField(upload_to="media/image",null=True)
    body = models.TextField(blank=True, null=True)
    slug = models.TextField(blank=True, null=True)

bloglist.html

<div class="blog_box">
    <a href="/blog/{{ article.slug }}" class="blog_img"><img
            src="/storage/blog/thumbs/251-.png"></a>
    <a href="/blog/{{ article.slug }}" class="blog_title">{{ article.Title }}</a>
</div>

views.py

def blog_list(request,slug):
    article = Blogmodel.objects.get(Title=slug)
    args = {'article':article, 'slug':slug}
    return render(request,'blog.html',args)

【问题讨论】:

  • 您是否遇到任何错误?
  • 我希望该文件名为 urls.py 而不是 url.py。其次,确保它是根 url,因为如果它在应用程序中,那么它不是 hooked in
  • 我无法对 slug 的结构进行排序,如何输出 slug

标签: django django-models django-views django-templates


【解决方案1】:

我认为如果你使用 slugify 会更准确地解决这个问题。 让我举一个使用 slug 的例子:

urls.py

urlpatterns = [
    path('', IndexView.as_view(),name='index'),
    path('detail/<int:pk>/<slug:slug>', TaskDetail.as_view(),name='detail'),
    ....]

models.py

class Task(models.Model):
    author = models.ForeignKey("auth.User", on_delete=models.CASCADE, verbose_name='Taskı Oluşturan')  # user
    title = models.CharField(max_length=150, verbose_name='Task Başlık')
    content = models.TextField(verbose_name='Task İçeriği')
    created_date = models.DateTimeField(auto_now_add=True, verbose_name='Task Oluşturulma Tarihi')  # o anki tarihi atar
    slug = models.SlugField(editable=False)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="task")

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Task, self).save(*args, **kwargs)

我的html页面的一部分

<td> <a href="{% url 'detail' pk=post.id slug=post.slug %}" class="font-weight-medium text-warning">{{ post.title }}</a></td>

views.py

class IndexView(ListView):
    template_name = 'task/index.html'
    model = Task
    context_object_name = 'task'
    # paginate_by = 7

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(IndexView, self).get_context_data(**kwargs)
        return context


class TaskDetail(DetailView):
    template_name = 'task/detail.html'
    model = Task
    context_object_name = 'single'

    def get_context_data(self, *, object_list=None, **kwargs):
        context = super(TaskDetail, self).get_context_data(**kwargs)
        return context

上面的代码示例是一个小项目的一小部分。希望它对您的业务有益。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2012-01-14
    • 2011-03-28
    • 2021-08-27
    相关资源
    最近更新 更多