我创建如果一个项目:在Django中创建随机URL?
- 一个用户提交一个输入到表格
- 这数据输入到生成一个随机URL数据库
- (认为imgur/YouTube的链接样式)
- 用户被重定向到该随机URL
- 输入数据是对随机URL显示
forms.py
class InputForm(forms.Form):
user_input = forms.CharField(max_length=50, label="")
random_url = forms.CharField(initial=uuid.uuid4().hex[:6].upper())
models.py
class AddToDatabase(models.Model):
user_input = models.CharField(max_length=50, unique=True)
random_url = models.CharField(max_length=10, unique=True)
views.py
def Home(request):
if request.method == 'POST':
form = InputForm(request.POST)
if form.is_valid():
user_input = request.POST.get('user_input', '')
random_url = request.POST.get('random_url', '')
data = AddToDatabase(user_input=user_input, random_url=random_url)
data.save()
return render(request, 'index.html', {'form':form})
else:
form = InputForm()
return render(request, 'index.html', {'form':form})
的index.html
<form action="" method="POST">
{{form}}
{% csrf_token %}
<input type="submit">
</form>
我是新来的Python/Django的,这可能是显而易见的。上面的代码允许用户提交一个成功添加到数据库的输入。它还会生成6个随机字符并将其添加到数据库中。
问题是我不知道如何将该随机代码转换为URL并在提交表单后将用户重定向到那里。
我已经尝试了一些方法,到目前为止,如添加action="{{ random_url }}"
到index.html
形式,以及增加url(r'(?P<random_url>\d+)', views.Home, name='home')
到urls.py
请注意, “6字UUID” 不是一回事。你正在做的是生成一个UUID,然后从它的前6个字符。这比产生适当的UUID更容易产生冲突。 – Chris
理解和编辑,谢谢! – Liam
如果您正在使用UUID,请记住它带有'-'字符。你(可能)想要替换它。 – SarTheFirst