我創建如果一個項目:在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