ora*_*j33 4 python forms django django-forms
我在尝试加载表单时遇到了请求上下文错误.
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)
Run Code Online (Sandbox Code Playgroud)
但它被困在视图的第一行.我和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
Run Code Online (Sandbox Code Playgroud)
响应:
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
Run Code Online (Sandbox Code Playgroud)
得到它了:
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
Run Code Online (Sandbox Code Playgroud)
你忘记导入RequestContext了吗?
from django.template import RequestContext
Run Code Online (Sandbox Code Playgroud)
你实际上不需要担心传递RequestContext,因为如果你使用render(),它会为你处理它.
所以你会这样做:
return render(request, 'add_company.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
代替
return render_to_response('add_company.html', {'form': form}, context)
Run Code Online (Sandbox Code Playgroud)
而已.当然,你也需要导入它.
from django.shortcuts import render
Run Code Online (Sandbox Code Playgroud)
希望,这解决了你的问题
| 归档时间: |
|
| 查看次数: |
9877 次 |
| 最近记录: |