当我想使用“next”参数返回调用表单时,我遇到了一个问题。我有一张有交易清单的表格。单击其中一个事务会将我带到更新表单。进行更新后,它应返回到事务列表。当我使用“manage.py runserver”运行我的应用程序时,这在本地主机上运行良好。但是,当我将代码部署到云(Pythonanywhere)时,单击submit按钮不会返回到调用表单,而是让我保持在更新表单上
我已经将问题缩小到了下一个参数,在生产过程中的某个地方删除了前导斜杠(/),但在本地主机中没有
tran.html(事务列表)-此链接加载包含要更新的事务的更新表单。此处request.get_full_路径包含一个前导斜杠,例如:'/tran/'
<td><a href="{% url 'fin:tran_update' t.id request.get_full_path %}">{{ t.omerchant }}
url.py
path('tran_update/<int:pk>', views.TranUpdateView.as_view(), name='tran_update'),
path('tran_update/<int:pk>/<path:next>', views.TranUpdateView.as_view(), name='tran_update'),
view.py
class TranUpdateView(UpdateView):
model = AccountTran
form_class = AccountTranForm
template_name = 'fin/tran_update.html'
context_object_name = 'tran'
def get_success_url(self, **kwargs):
print('get_success_url - in TranUpdateview')
if 'next' in self.kwargs:
next_url = self.kwargs['next']
print('next_url:', next_url)
return next_url
return reverse_lazy('fin:tran')
从生产运行时,下一个url缺少前导斜杠,例如:“tran/”。在本地服务器上,它具有前导斜杠ex:“/tran/”
在生产环境中,当我单击更新视图中的提交按钮时,它不会返回列表视图,而是停留在更新视图中,url更改为:
https://fin.mysite.com/tran_update/4890//tran/tran/
如果我再次单击“提交”,它将更改为:
https://fin.mysite.com/tran_update/4890//tran/tran/tran/tran/
我搞不懂前导斜杠是怎么掉的
我在本地使用Django 2.2.4、Python 3.8.2,在云中使用Python 3.7
我通过检查前导斜杠并在缺少时添加一个来解决这个问题。这可能是修复了一个症状,而不是路线问题,但它现在起作用了
相关问题 更多 >
编程相关推荐