python - 如何修改提交生成的url
问题描述
我正在使用 python 3.6 和 django 3.0X
我遇到的问题是:
我想要的流程是当用户选择一个品牌并提交时。url 路径将生成为http://127.0.0.1:8000/show/car:Ford并链接到 url.py 以传递给 show.html
但是在提交时,生成的 url 路径为http://127.0.0.1:8000/show?car=Ford
如何获得符合 url.py 的正确 url 路径。这就是为什么有一个'?和 '=' 在 url 路径中?
或者如何修改 url.py 以满足 search.html 生成的 url 路径?
以下是我的代码:
搜索.html
<form name='my form' action='/show' method='GET'>
<label for='brand'> Select a brand </label>
<select name='car'>
{% for m in maker %}
<option value= '{{ m }}'> {{ m }} </option>
{% endfor %}
</select><br>
<input type='submit' value='Go' />
显示.html
Model:<br>
{% for m in model %}
{{ m }}
{% endfor %}
<br>
网址.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
path('index/', views.index),
path('welcome/', views.welcome),
path('django_plotly_dash/', include('django_plotly_dash.urls')),
path('search/', views.search),
path('index/buttons.html', views.buttons),
path('show/car:<str:brand>', views.show, name='show-url')
]
视图.py
def search(request):
car = models.Cars.objects.all()
df_car = read_frame(car)
maker = list(df_car['make'].str.capitalize().unique())
#maker = models.Cars.objects.values('make').distinct()
return render(request, 'search.html', locals())
def show(request, brand):
car = models.Cars.objects.filter(make=brand)
df_car = read_frame(car)
model = df_car.model.unique()
return render(request, 'show.html', locals())
解决方案
不,您不能更改 URL 的工作方式。问号将常规 URL 和查询分开 - 这是传递给 URL 的附加信息。如果您强制更改它,则 URL 将无法正确加载,而且,这样做没有任何意义。
如果您想知道类似的东西是否path('whatever/<str:name>, ...)
会以带问号的格式工作,它会的。
推荐阅读
- c - 如何在不使该数组全局化的情况下从另一个函数中释放动态分配的数组?
- c++ - movb 引起不好的猜测
- mysql - flask 和 mysql 错误 (pymysql.err.InternalError) (1525, \"不正确的 DATETIME 值: '1399-02-30 '\")\n
- compression - 缓存以更快地重新压缩给定编辑/添加/删除的文件夹
- python - 使用纯 Numpy (Softmax + CrossEntropy) 实现神经网络
- docker - docker swarm 不会重新启动不健康的 selenium hub 容器
- r - 列表不会在循环中保存来自 ggplot 的值
- python - Python 和 pip 版本不同,可能会导致问题
- sorting - 为什么在使用递归函数时会更新我的(初始)变量?
- openmdao - 是否可以设置初始值以用于优化?