0

希望避免在 Django 模板中对表单操作进行硬编码。而不是 action="/en/accounts/change_profile/"我更喜欢类似action=views.change_profile.

有没有办法将视图函数连接到表单操作而不必使用字符串?

我的表格

<form action="/en/accounts/change_profile/" method="post">
{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit" />
</form>

我的观点

@login_required
def change_profile(request):
    form = None
    if request.method == 'POST':
        form = forms.UserProfileForm(request.POST)

        if form.is_valid():  
        return HttpResponseRedirect('/en/accounts/profile')

else:
    form = forms.UserProfileForm()

return shortcuts.render(request, 'project/change_profile.html',
                        {'form':form,})
4

2 回答 2

1

尝试使用url-Tag,如:

<form action="{% url 'change_profile' %}" method="post">

定义路由后。这里有一些例子。

语言环境有一些棘手的部分。我记得 2009 年,你可以通过中间件来处理它。但现在更容易了:urls 中的语言前缀,例如:

from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
from django.utils.translation import ugettext_lazy as _

urlpatterns = i18n_patterns('',
    url(_(r'^accounts/change_profile/$'), 'views.change_profile', name='change_profile'),
)
于 2013-11-05T20:29:45.493 回答
1

在 urls.py 中:

url(r'^en/accounts/change_profile/', 'app.views.change_profile', name='change_profile'),

现在在您的模板中:

{% url change_profile %}
于 2013-11-05T20:30:42.187 回答