一度入力すると、別のWebページに誘導されるか、無効な場合は同じページに残るシンプルなフォームを作成しようとしています。ページにはテキストボックスと提出フォームがあり、ユーザーが何かを入力すると別のページに誘導されます。DJANGO - データ付きPOSTから別のページにリダイレクト
次のように私のディレクトリ構造は次のとおりです。次のように
appName/
app/
forms.py
urls.py
views.py
templates/
app/
goodbye.html
name.html
library.html
thanks.html
appName/
settings.py
urls.py
マイアプリ/ urls.pyは次のとおりです。
from django.conf.urls import url
from . import views
app_name = 'app'
urlpatterns = [
url(r'^$', views.index2, name = 'index'),
url(r'^hello/$', views.hello, name = 'hello'),
url(r'^goodbye/$', views.goodbye, name = 'goodbye'),
#url(r'^library$', views.library, name = 'library'),
url(r'^library/$', views.library, name = 'library'),
url(r'^library/(?P<book_id>[0-9]+)/$', views.book, name = 'book'),
url(r'^getname/$', views.get_name, name = 'get_name'),
url(r'^your-name/$',views.get_name, name='get_name'),
url(r'^thanks/$',views.say_thanks,name='thanks'),
#url(r'^thanks/(?P<name_id>[a-zA-Z]+)/$', views.say_thanks,name='thanks'),
]
マイforms.pyは次のとおりです。
からdjangoインポートフォーム
class NameForm(forms.Form):
your_name = forms.CharField(label = 'Your name', max_length=100)
マイアプリ/ views.pyです:
from django.http import HttpResponse
from django.template import loader
from django.shortcuts import render
from django.http import HttpResponseRedirect
#forms
from .forms import NameForm
# Create your views here.
def index2(request):
return HttpResponse("hello world")
def hello(request):
text = """<h1>Welcome to my app! </h1>"""
return HttpResponse(text)
def goodbye(request):
template = loader.get_template("app/goodbye.html")
context = {
'output' : 'This is output from goodby views.py request handler'
}
return HttpResponse(template.render(context,request))
def library(request):
template = loader.get_template("app/library.html")
context = {
'output' : 'Welcome to the libary!!'
}
return HttpResponse(template.render(context, request))
def book(request, book_id):
return HttpResponse("You're looking at book %s. " % book_id)
def get_name(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
#process the data in form.cleaned_data as required
locationGo = "/thanks/"
template = loader.get_template("app/thanks.html")
return HttpResponse(template.render({'name':'name'},request))
else:
form = NameForm()
template = loader.get_template("app/name.html")
context = {'form': form}
return HttpResponse(template.render(context, request))
def say_thanks(request):
template = loader.get_template("app/thanks.html")
return HttpResponse(template.render({'name': 'name'},request))
私のテンプレートが含まれます:
名.html:
<form action = "/getname/" method = "post">
{% csrf_token %}
{{ form }}
<input type = "submit" value = "Submit" />
</form>
goodbye.html
をに訪問するユーザー:名前を表示するようにwebsite.com/getname/私はようですどうなるか
Thanks {{name}}!
thanks.html
<h1>Goodbye to Template Romance</h1> <a href="{% url 'app:index' %}">Go Back</a>
。 htmlファイル(それはあります)
ユーザーが同じページ(web.com/.com/get name /)(これはありません:ValueError at/getname/- >ビューapp.views.get_nameはHttpResponseオブジェクトを返しませんでした。代わりにNoneを返しました。
ユーザーがsubmitフィールドに入力してwebsite.com/thanks/にリダイレクトされた場合(これは並べ替えられますが、現在はthanks.htmlテンプレートが読み込まれていますが、URLはwebsite.com/getnameに残ります) /)get_nameインサイド
(リクエスト):機能、POSTとGETあれば...他には、[送信]ボタンに基づいて発射されていないようだ、とそれがロードされていないようです現在のURLアドレスを処理した後に変更してください。私はHttpRedirect()を使って試してみましたが、フォームデータ(別の問題です)も渡したいと思います。
どのような提案が大きな助けになるでしょう!