繁体   English   中英

如何修改提交生成的 url

[英]How do I modify the url that generate by submit

我正在使用 python 3.6 和 django 3.0X

我遇到的问题是:

我想要的流程是当用户 select 一个品牌并提交时。 The url path will generate as http://127.0.0.1:8000/show/car:Ford and link to url.py to pass to 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>

url.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>, ...)之类的内容是否可以以带问号的格式工作,它会的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM