Skip to main content
 首页 » 编程设计

python之为什么这个 django url 不重定向

2024年08月28日23dudu

从以下表单获取发布数据后,页面应重定向到“associate:learn”,如操作所示。但是,它只是停留在单选按钮页面上。我怀疑我犯了初学者的错误,但在重新阅读教程后,我不确定发生了什么。

index.html

Choose a dataset  
 
{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} 
 
<form action="{% url 'associate:learn' %}" method="post"> 
{% csrf_token %} 
{% for dataset in datasets %} 
    <input type="radio" name="dataset" id="dataset{{ forloop.counter }}" value="{{ dataset.id }}" /> 
    <label for="dataset{{ forloop.counter }}">{{ dataset }}</label><br /> 
{% endfor %} 
<input type="submit" value="learn" /> 
</form> 

网址.py

from django.conf.urls import patterns, include, url 
 
from django.contrib import admin 
admin.autodiscover() 
 
urlpatterns = patterns('', 
    url(r'^$', "associate.views.index", name='index'), 
    url(r'^$', "associate.views.learn", name='learn'), 
) 

网址.py

from django.conf.urls import patterns, include, url 
 
from django.contrib import admin 
admin.autodiscover() 
 
urlpatterns = patterns('', 
    url(r'^images/', include('images_app.urls', namespace="images_app")), 
    url(r'^associate/', include('associate.urls', namespace="associate")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

View .py

def index(request): 
 
    images = Image.objects.all() 
    datasets = [] 
    for i in images: 
 
        if i.rank() >= 3: 
 
            datasets.append(i) 
 
    return render(request, 'associate/index.html', {'datasets':datasets}) 

原始 HTML 应重定向到此页面。

学习.html

THIS IS THE LEARN PAGE 

请您参考如下方法:

可以直接去 associate:learn 吗?

在你的第一个 urls.py 中

urlpatterns = patterns('', 
    url(r'^$', "associate.views.index", name='index'), 
    url(r'^$', "associate.views.learn", name='learn'), 
) 

该 url 将始终匹配“associate.views.index”,因为它出现在“associate.views.learn”之前,并且它们都具有相同的 url。

您应该将其更改为:

urlpatterns = patterns('', 
    url(r'^$', "associate.views.index", name='index'), 
    url(r'^learn_or_something$', "associate.views.learn", name='learn'), 
) 

希望这对您有所帮助。