2014-04-15 20 views
-1

我的表单由于某种原因没有通过。我对django还是个新手。它应该显示在每个网址上,因此它位于base.html中,并且它有自己的应用程序;利益。只有按钮 '添加' 自带通过,而不是形式.. :(表单不通过

interest.html(包括在base.html文件)

<form method='POST' action=''> {% csrf_token %} 
     <div class='row'> 
     {{ interests_form.interest }} 
     <input class='btn btn-success' type='submit' value='add'/> 
     </div> 
    </form> 

views.py

def user_interest(request): 
    interest = Interests.objects.all() 
    interests_form = InterestsForm(request.POST or None) 

    if interests_form.is_valid(): 
     new_interest = interests_form.save(commit=False) 
     new_interest.save() 
     return HttpResponseRedirect('/') 

    context = locals() 
    return render(request, 'interest.html', context) 

forms.py

class InterestsForm(forms.ModelForm): 
    class Meta: 
     model = Interests 
     widgets = { 
      'interest': forms.TextInput(attrs={'placeholder': 'New Interest'}), 
     } 

models.py

class Interests(models.Model): 
    interest = models.CharField(max_length=100) 
    created = models.DateTimeField(auto_now_add=True) 

urls.py

urlpatterns = patterns('', 
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.STATIC_ROOT }), #needed for profile pic 
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT }), #needed for profile pic 
    url(r'^admin/', include(admin.site.urls)), 
    (r'^accounts/', include('registration.backends.default.urls')), 
    url(r'^$', 'profiles.views.base', name='home'), 
    url(r'^users/$', 'profiles.views.all', name='users'), 
    url(r'^about/$', 'about.views.about_us', name='about_us'), #the name is not needed in most cases 
    url(r'^members/(?P<username>\w+)/$', 'profiles.views.single_user'), 
    url(r'^edit/$', 'profiles.views.edit_profile', name='edit_profile'), 
    (r'^edit/jobs$', 'profiles.views.edit_jobs'), 
    (r'^edit/locations$', 'profiles.views.edit_locations'), 
    url(r'^posts/$', 'posts.views.user_post', name='posts'), #change the middle section to: posts.views.''' 
    url(r'^search/$', 'posts.views.search', name='search'), 
) 
+1

你还可以显示你的'urls.py'吗? –

+0

该网址已添加。我没有针对兴趣应用的urls.py,也没有针对应用中views.py的视图。 – Christo

+0

那就是你的问题。 –

回答

1

在urls.py中没有引用user_interest视图,也没有在其他地方使用该视图。里面的代码永远不会运行。

如果你想添加interest_form的所有网页,你有这样做的主要有两种方式:


例如,如果您选择要编写上下文处理器,您可以在应用程序目录中创建一个context_processors.py文件并编写这个简单的处理器:

​​

你会那么需要把这个函数添加到背景处理器中设置所谓TEMPLATE_CONTEXT_PROCESSORS列表 - 类似your_project.your_app.context_processors.user_interests东西。

这会使interest查询集和interests_form表单在所有模板中可用。您还需要添加一个单独的视图来处理发送后的表单。

+0

我在哪里添加单独的视图?顺便通过现在的形式,非常感谢!现在它只需要工作。 – Christo

+0

好的,想出了视图。最后一件事:当我提交表单时,表单随着列出的对象一起消失。我必须访问另一个网址才能再次显示它们。我把这个添加到视图中:interest_form = InterestsForm(request。POST或无) 如果interests_form.is_valid(): new_interest = interests_form.save(提交=假) new_interest.save() 返回HttpResponseRedirect( '/') – Christo

0

尝试定义您的上下文变量,如下所示:

context = (
'interests_form': interests_form, 
) 

可能也值得尝试只是:

{{ interests_form.as_p }} 

开始说起,看如果任何东西出现在您呈现的HTML中