让slug从标题填充或创建随机Django表单

2024-10-04 01:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望slug是从用户导入的标题自动生成,或有随机整数生成,如果标题是空的。按照我目前的方式,slug应该是从表单标题填充的,但是我得到一个错误消息,说表单没有title字段。在

所以,我需要:

  1. 把子弹换成视图.py从输入的标题填充
  2. 假设生成器中的“随机”标题为空模型.py以及views.py?) 在

有人能帮我吗?在

提前谢谢你!我感谢所有的帮助!在

表单.py:

class PhotoUploadForm(forms.ModelForm):
    title = forms.CharField(
        widget=forms.TextInput(attrs={"placeholder": "Title of photo", "size": "30"})
    )
    description = forms.CharField(
        widget=forms.Textarea(attrs={"placeholder": "Description of photo"})
    )

    class Meta:
        model = Photo
        fields = ('category', 'title', 'description', 'image')

模型.py:

^{pr2}$

视图.py:

def photo_upload_view(request, username):
    u = MyUser.objects.get(username=username)
    form = PhotoUploadForm()

    if request.method == 'POST':
        form = PhotoUploadForm(request.POST or None, request.FILES)
        new_slug = Photo.objects.get(slug=form.title)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.creator = request.user
            obj.slug = slugify(new_slug)
            obj.save()
            messages.success(request, "Thank you! You have successfully posted your picture!")
            return HttpResponseRedirect('/')

        else:
            form = PhotoUploadForm()

    submit_btn = "Upload Post"

    context = {
        "submit_btn": submit_btn,
        "form": form
    }
    return render(request, "photos/photo_upload.html", context)

Tags: pyform视图obj标题表单titlerequest
1条回答
网友
1楼 · 发布于 2024-10-04 01:26:03

这是你的问题:

new_slug = Photo.objects.get(slug=form.title)

您将new_slug的值设置为检索到的对象,而不是字符串。这不会让人觉得无聊。你可能只想要这个:

^{pr2}$

但如果您确实想从照片中检索值,请在末尾引用该属性,因此:

new_slug = Photo.objects.get(slug=form.title).slug

至于生成随机整数:

from random import randint
randint(0,100) 

将返回一个介于0和100(包括0和100)之间的随机整数。在

相关问题 更多 >