簡體   English   中英

Django,POST方法,已登錄用戶

[英]Django, POST method, already logged in user

我在 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 添加到發布視圖表單?

做類似的事情。 我沒有檢查這是否有效。

  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})

好的,我已經設法以一種原始的方式做到了:

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM