Django' RequestContext'未定义 - forms.ModelForm

时间:2014-12-07 21:21:01

标签: python django forms django-forms

我在尝试加载表单时遇到了请求上下文错误。

  1. 在models.py
  2. 上创建了ModelForm
  3. 在我的视图中创建了def添加
  4. 将网址链接到视图
  5. views.py

    def add_company(request):
    # Get the context from the request.
    context = RequestContext(request)
    
    # A HTTP POST?
    if request.method == 'POST':
        form = CompanyForm(request.POST)
    
        # Have we been provided with a valid form?
        if form.is_valid():
            # Save the new category to the database.
            form.save(commit=True)
    
            # Now call the index() view.
            # The user will be shown the homepage.
            return index(request)
        else:
            # The supplied form contained errors - just print them to the terminal.
            print form.errors
    else:
        # If the request was not a POST, display the form to enter details.
        form = CompanyForm()
    
    # Bad form (or form details), no form supplied...
    # Render the form with error messages (if any).
    return render_to_response('add_company.html', {'form': form}, context)
    

    但是它被困在视图的第一行。我和rango教程一样。它有效。但是我的工作不起作用。有人提示吗?

    感谢

    请求标题:

    Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Encoding gzip, deflate
    Accept-Language de,en-US;q=0.7,en;q=0.3
    Cache-Control   max-age=0
    Connection  keep-alive
    Cookie  csrftoken=I9120vmRATOck4a0SSqlfJPLl62PMUOR; sessionid=isx0p4ezb2y9m129v6243ui3ucuyvrak
    Host    localhost:8000
    User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0
    

    响应:

    Content-Type    text/html
    Date    Sun, 07 Dec 2014 22:01:03 GMT
    Server  WSGIServer/0.1 Python/2.7.6
    X-Frame-Options SAMEORIGIN
    
    Request Method:     GET
    Request URL:    http://127.0.0.1:8000/comp/new  
    Django Version:     1.7.1
    Exception Type:     NameError
    Exception Value:    
    
    name 'models' is not defined
    
    Exception Location:     /home/mandaro/django/comp/company/forms.py in CompanyForm, line 5
    Python Executable:  /usr/bin/python
    Python Version:     2.7.6
    

    GOT it:

    Problem wasn t on form - it was template import problem. Imported render_to_response instead of render solved it. Now it can goes on. ciao and tx
    

2 个答案:

答案 0 :(得分:7)

您是否忘记导入RequestContext?

from django.template import RequestContext

答案 1 :(得分:6)

你实际上不需要担心传递RequestContext,因为如果你使用render(),它会为你处理它。

所以你会这样做:

return render(request, 'add_company.html', {'form': form})

而不是

return render_to_response('add_company.html', {'form': form}, context)

就是这样。当然,你也需要导入它。

from django.shortcuts import render

希望,这可以解决您的问题

相关问题