Django姓名拼接功能开发:无法输出结果求助
Django姓名拼接应用无法输出结果的排查方案
1. 表单Action路径不匹配
你的应用内urls.py里,处理提交的路由是path('add', views.addname, name='add'),但input.html里表单的action='addname'与路由路径不匹配,导致请求无法正确到达addname视图。
修改input.html的form标签,推荐用Django的{% url %}标签(适配路由名称,更灵活):
<form action="{% url 'add' %}" method='post'>
或者直接写对应路径:
<form action='/add' method='post'>
2. 模板继承缺失
你的模板中使用了{% block content %},但没有继承基础模板,会导致block内容无法正常渲染。
- 新建
templates/base.html,内容示例:
<!DOCTYPE html> <html> <head> <title>姓名拼接应用</title> </head> <body> {% block content %}{% endblock %} </body> </html>
- 在
input.html和resultprint.html开头添加继承语句:
{% extends 'base.html' %}
3. POST请求的异常处理
直接用request.POST['fname']如果用户未输入就提交,会抛出KeyError导致崩溃,建议用.get()方法做容错处理:
修改views.py的addname函数:
def addname(request): val1 = request.POST.get('fname', '') val2 = request.POST.get('lname', '') res = f'Hi {val1} {val2}' # 用f-string更易读,同时给姓名添加空格分隔 return render(request, 'resultprint.html', {'resultprint': res})
4. 路由路径的斜杠规范
Django默认会重定向带斜杠的路径,建议给路由添加末尾斜杠,避免路径匹配问题:
修改应用内urls.py:
urlpatterns = [ path('', views.home, name='home'), path('add/', views.addname, name='add') ]
按以上步骤修改后,即可正常输出拼接结果。
内容的提问来源于stack exchange,提问作者Saassy
相关产品推荐
相关产品推荐

