は私がプロジェクト作成しています:DjangoでランダムなURLを作成していますか?
- は、ユーザーがフォームに入力を提出し
- データが入力され、ランダムなURLが生成されたデータベース
- にされていること(imgur /ユーチューブスタイルのリンクを考えます)
- ユーザーが
- 入力データは、ランダム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>
Iは、Python/Djangoのに新たなんです、おそらく明らかです。上記のコードは、ユーザーがデータベースに正常に追加された入力を提出することを可能にします。また、6つのランダムな文字を生成し、それをデータベースに追加します。
問題は、ランダムコードをURLに変換してフォームを送信した後にユーザーをリダイレクトする方法がわかりません。
私は私はあなたのURLの代わりに、uuid.uuid4()[:6]
ためHashidsのようなものを使用することをお勧めします、このようなindex.html
フォームにaction="{{ random_url }}"
を追加するだけでなく、urls.py
注意。あなたがやっていることは、UUIDを生成してから、最初の6文字を取り出すことです。これは、適切なUUIDよりも衝突を生成する可能性がはるかに高いです。 – Chris
理解していただきありがとうございました! – Liam
UUIDを取得している場合は、 '-'文字が戻ってくることに注意してください。あなたは(おそらく)それを置き換えたいだろう。 – SarTheFirst