Django,POST方法,已登录用户

问题描述 投票:0回答:2

我用Django写一个应用程序-像Twitter,我已经登录/注销面板了,已经登录的用户可以添加推文。一条推文在数据库中有3列:

class Tweet(models.Model):
    content = models.CharField(max_length=140)
    creation_date = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

该表格如下:

class TweetForm(forms.Form):
    content = forms.CharField(label='content')

和视图:

class TweetCreationView(LoginRequiredMixin, View):
    permission_required = 'twitter.add_tweet'
    raise_exception = True
    permission_denied_message = 'You are not allowed being there!'

    def get(self, request):
        form = TweetForm()
        return render(request, "twitter/add_tweet.html", {"form": form})

    def post(self, request):
        form = TweetForm(request.POST)
        if form.is_valid():
            if request.user.is_authenticated():
                username = request.user.username
                user_id = username.id
                content = form.cleaned_data.get('content')
        return render(request, "twitter/add_tweet.html", {"form": form})

如何获取django中已经登录的用户并将其ID添加到发布视图表单中?

python django forms username
2个回答
0
投票

做类似的事情。我没有检查这是否有效。

  if request.user.is_authenticated():
        if form.is_valid():
            form = form.save(commit=False)
            form.user = request.user
            content = form.cleaned_data.get('content')
            form.save()
            return render(request, "twitter/add_tweet.html", {"form": form})

0
投票

好,我已经设法以一种原始的方式做到这一点:

def post(self, request):
    form = TweetForm(request.POST)
    if form.is_valid():
        t = Tweet()
        current_user = request.user
        t.content = form.cleaned_data.get('content')
        t.user_id = current_user.id
        t.save()
        if t:
            return redirect(reverse("base"), locals())
    return render(request, "twitter/add_tweet.html", locals())
© www.soinside.com 2019 - 2024. All rights reserved.