亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何設置 url 的權限

如何設置 url 的權限

臨摹微笑 2023-09-26 16:39:59
我是 Django 新手,我已經實現了一個有效的表單,現在我想在 URL 上設置權限。提交表單后,它會將我重定向到此 URLhttp://127.0.0.1:8000/success/無需提交表單,我可以手動輸入 URL 名稱http://127.0.0.1:8000/success/,它會將我帶到同一頁面。如何設置“成功”網址的權限,以便用戶無法手動查看頁面,除非表單有效并提交?我需要一個裝飾器嗎?模型:class Profile(models.Model):    user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=True)     profile_pic = models.ImageField(upload_to='ProfilePicture/', default="ProfilePicture/avatar.png", blank=True)       phone = models.IntegerField(default='0', blank=True)    email = models.EmailField(blank=True)    date_of_birth = models.CharField(max_length=50, blank=True)    address = models.TextField(blank=True)    date = models.DateTimeField(auto_now_add=True)      class Meta:        verbose_name = 'Profile'        verbose_name_plural = 'Profiles'        ordering = ['-date']    '''Method to filter database results'''    def __str__(self):        return self.user.usernameclass CotCode(models.Model):    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)    cot_code = models.IntegerField(default='0', blank=True)    date = models.DateTimeField(auto_now_add=True)     class Meta:        verbose_name = 'CotCode'        verbose_name_plural = 'CotCode'        ordering = ['-date']    def __str__(self):        return self.user.username網址:path('cot/', TransferCOTView, name='transfer_cot'),path('success/', SuccessfulView, name='successful_trans'),瀏覽次數:@login_requireddef TransferCOTView(request):    form = CotCodeForm(request.POST)    if request.method == "POST":        if form.is_valid():            cot_code = form.cleaned_data.get('cot_code')        try:            match = CotCode.objects.get(cot_code=cot_code)            return redirect('site:successful_trans')        except CotCode.DoesNotExist:             messages.info(request, "Wrong code")
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

一個簡單的選項是設置一個會話變量,通知表單已發布且有效,并在顯示成功頁面之前檢查它。請參閱此處的會話示例https://docs.djangoproject.com/en/3.1/topics/http/sessions/#examples


例如


def formview(request):

    # process form

    request.session["form_filled"] = True

    # redirect to success


def success(request):

    if not request.session.get("form-filled"):

        raise Http404("Form not filled")

    del request.session["form_filled"] # success view visible once after form is filled

    # return view template

您還可以檢查用戶是否在成功視圖中填寫了 COT 代碼。


def SuccessfulView(request):

    cot_code_exists = CotCode.objects.filter(user=request.user).count()

    if not cot_code_exists:

        raise Http404("Cot code does not exist for user")

    return render(request, 'successful_transfer.html')


查看完整回答
反對 回復 2023-09-26
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號