【发布时间】:2017-09-20 12:27:18
【问题描述】:
我正在创建一个项目,其中:
- 用户将输入提交到表单中
- 该数据被输入到数据库中
- 生成一个随机 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 更容易产生冲突。
-
理解和编辑,谢谢!
-
如果您使用 UUID,请记住它返回时带有
-字符。您(可能)想要替换它。
标签: python django database forms url