为了账号安全,请及时绑定邮箱和手机立即绑定

如何在基于类的视图中使用 url 变量

如何在基于类的视图中使用 url 变量

富国沪深 2023-05-23 15:37:29
我在 url 变量和基于类的视图方面有问题,但主要是在 html 或模板中,因为我不知道如何表示它,我将向您展示代码以便您理解。urls.pyapp_name = 'app1'urlpatterns = [    path('add_post/<str:sym>',AddPostView.as_view(), name='addpost'),]views.pyclass AddPostView(CreateView):    model = Post    form_class = PostForm    template_name = 'app1/createpost.html'    def get_queryset(self):        ala = Post.objects.filter(stock__symbol=self.kwargs['sym'])        return alamodels.pyclass StockNames(models.Model):    name = models.CharField(max_length=255)    symbol = models.CharField(max_length=255)    def __str__(self):        return self.symbol            class Post(models.Model):    title = models.CharField(max_length= 255)    header_image = models.ImageField(null = True, blank = True, upload_to = 'images/')    author = models.ForeignKey(User, on_delete=models.CASCADE)    body = RichTextField(blank = True, null = True)    #body = models.TextField()    post_date = models.DateField(auto_now_add=True)    category = models.CharField(max_length=255, default='coding')    snippet = models.CharField(max_length=255)    likes = models.ManyToManyField(User, related_name = 'blog_posts')    stock = models.ForeignKey(StockNames, null=True, on_delete = models.CASCADE)    def total_likes(self):        return self.likes.count()    def __str__(self):        return self.title + ' | ' + str(self.author)        def get_absolute_url(self):        return reverse('app1:article-detail', args=(self.id,))模板(我在添加帖子(当前)时遇到问题){% extends "app1/base.html" %}    {% block body_block %}            {% if stock_sym %}    <h1> {{sym}} </h1>    <a href ="{% url 'app1:addpost' StockNames.symbol %}">Add Post<span class="sr-only">(current)</span></a>         {% if stocks %}
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

尝试:

<a href ="{% url 'app1:addpost' sym=sym %}">Add Post<span class="sr-only">(current)</span></a>

Views.py - 尝试切换 get_context_data 的方法:

class AddPostView(CreateView):
    model = Post
    form_class = PostForm
    template_name = 'app1/createpost.html'

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(**kwargs)
        context.update(
            sym=get_object_or_404(StockNames, StockNames.symbol)
        )    
            return context
查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信