单击submit时未调用Django view函数

单击submit时未调用Django view函数,django,forms,django-views,django-urls,Django,Forms,Django Views,Django Urls,我的views.py中有两个视图函数。第一个呈现index.html 第二个是为index.html update_db上的表单操作创建的。当我在index.html文件上单击submit时,它将url更改为/update1,但函数调用有print'HI',我在控制台上看不到。运行后也不会创建任何新文件。 最初我返回了renderrequest,{},但我不确定是否应该返回它。 我的URL.py有问题吗 views.py url.py主配置文件 from django.conf.urls im

我的views.py中有两个视图函数。第一个呈现index.html 第二个是为index.html update_db上的表单操作创建的。当我在index.html文件上单击submit时,它将url更改为/update1,但函数调用有print'HI',我在控制台上看不到。运行后也不会创建任何新文件。

最初我返回了renderrequest,{},但我不确定是否应该返回它。 我的URL.py有问题吗

views.py

url.py主配置文件

from django.conf.urls import url, include
from django.urls import path
from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
    url(r'^admin/', admin.site.urls),
    url(r'^login/$', auth_views.LoginView.as_view(template_name="login.html"), name="login"),
    url(r'^logout/$', auth_views.LogoutView.as_view(template_name="logout.html"), {'next_page': '/'}, name='logout'),
    url('^', include('pair.urls')),


] 

url.py

index.html

<form action="/update1" method="POST" >

    {% csrf_token %}

  Player : <b> {{ user.get_username }} </b> 
<p style="background-color: #ddd674">Primary image :
    <input type="hidden" name="user" id="{{ user.get_username }}" value="{{ user.get_username }}"></input>
    <input type="hidden" name="p_img" id="{{ p_img.p_img }}" value="{{ p_img.p_img }}"><img id="p_img" src="{{media_url}}{{ p_img.p_img }}" height=300px ></input>

</p>
<hr height=2px >
<p style="background-color: #a7e0d9">Secondary image :

    {% for img in s_img %}
        {% if img  %}
            <input type="radio" id="{{ img }}" name="ans" value="{{ img }}" >
                <img src="{{media_url}}{{ img }}" height=250px > 
            </input>
        {% endif %}
    {% endfor %}
    <br> 

</p>
<hr>
{{ ans }}

<input type="submit" value="Submit" />
  </form>


我认为您的URL是在localhost:8000//update1处引用的,而不是在localhost:8000/update1处引用的

只要改变一下:

url('/update1', views.update_db, name='update_db')
为此:

url('update1', views.update_db, name='update_db')

可以在views.py中添加任意数量的方法。除非他们返回一个渲染的HTML文件,否则我不认为Django会把它们看作是视图。 我的两个赌注是:

更改url'/update1',views.update_db.as_wiew,name='update_db'

使update_db方法返回类似于returnrendersomething的内容


希望收到你的来信

您在控制台中看到的错误是什么?@Abhyudai没有错误。只是def indexrequest中有一个print语句,它会在控制台上打印,甚至在单击submit之后。。索引视图在地址栏更改为/update1时称为url,但未打印“HI”,这意味着url文件存在问题。它将请求定向到索引函数。尝试删除path for index函数中的$。仍然不起作用。即使我认为问题出在url.py文件中,但我已经尝试过改变顺序、编写URL的方式、删除和添加斜杠,但仍然没有调用update_db。我想知道的另一件事是,通过index和update_db函数返回renderrequest,index.html是否可以。是的,您可以为这两个函数返回相同的模板,但从逻辑上讲,您可能希望在您的情况下使用将不同的数据传递到templates index.html,否则,使用两个不同的函数是没有意义的。print语句在任何情况下都应该工作,但实际上不行。所以可能还有其他一些问题。您如何确定调用了该方法?这可能是这里的问题。如果没有按照原始海报的当前状态调用它,我猜您的赌注将无法解决这些问题。原始海报正试图通过url访问该方法,但失败了。我的赌注是基于django由于我的赌注而无法将该方法识别为视图。因此,print语句在这种情况下不能工作,对吗?实际上,我只想在单击submit按钮之后呈现index.html。Update_db用于将函数中请求的值存储在函数中。我最初返回了renderrequest'index.html',但它仍然不会打印'HI',表明它没有被调用,这就是为什么我不确定rendering index.html是否是问题所在。单击submit时,URL会更改为localhost:8000/update1,带斜杠和不带斜杠,但控制台中不会打印'HI'。
url('/update1', views.update_db, name='update_db')
url('update1', views.update_db, name='update_db')