我正在使用Tornado(python),并且我的处理程序采用这种格式。
class Application(tornado.web.Application):
def __init__(self):
handlers = [
url(r'/', MainHandler, name="main_handler"),
url(r'/user', UserHandler, name="user_handler"),
url(r'/users', UserListHandler, name="user_list_handler"),
url(r'/profile/(?P<username>\w+)', UserProfileHandler, name="user_profile_handler"),
]
settings = dict(
template_path = os.path.join(os.path.dirname(__file__), "templates"),
static_path = os.path.join(os.path.dirname(__file__),"static"),
debug = True)
self.db = client['user_db']
super().__init__(handlers, **settings)
登录页面上的我的HTML代码是
<h1>INFO DB</h1>
<p>Search via username...</p>
<form method="get" action="{% url 'user_profile_handler' find_username %}">
<p>Enter Username<br>
<input rows=1 cols=20 name="find_username"></p>
<input type="submit">
</form>
<br>
现在,我的目标是当我单击提交按钮时,我被重定向到页面'/ profile / {username}例如:如果搜索栏中的用户名是'abcd',则应在按Submit时将我重定向到/ profile / abcd。在HTML中的表单标签的action属性中应放置什么?
Well django的{%url%}之类的Jinja标签是在获取时估算的,因此您实际上必须将find_username传递给您无法使用这些方案的上下文,因为您是在页面加载后获得它的。要实现您想要做的就是创建一个可以处理这种情况的视图。用伪代码看起来像这样
def view(request):
form = username_form()
if request.method == "POST":
form = username_form(request.POST)
if form.is_valid():
user = get_object_or_404(User, username=form.cleaned_data['username'])
return redirect('profile', user.id)
return render(request, ...., {'form': form})