问题
I'm running Django 1.4 with Python 2.7 on Kubuntu 12.04.
I here is my views.py
from __future__ import unicode_literals
from django.shortcuts import render_to_response
from django.core.context_processors import csrf
from rsb.forms import RegisterForm
def index(request):
return render_to_response("index.html")
def services(request):
return render_to_response("services.html")
def login(request):
return render_to_response("login.html")
def contact(request):
return render_to_response("contact.html")
def about(request):
return render_to_response("about.html")
def registerUser(request):
form = RegisterForm()
data = {}
data.update(csrf(request))
data.update({ 'form' : form })
return render_to_response("register.html", data)
def addUser(request):
return render_to_response("added_user.html")
Here is my urls.py
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^services/', 'rsb.views.services'),
url(r'^login/', 'rsb.views.login'),
url(r'^register/', 'rsb.views.registerUser'),
url(r'^contact/', 'rsb.views.contact'),
url(r'^about/', 'rsb.views.about'),
url(r'^addUser/', 'rsb.views.addUser'),
url(r'^admin/', include(admin.site.urls)),
)
Here is my forms.py
class RegisterForm(forms.Form):
client_type = ('Personal', 'Company')
countries = Countries.objects.all()
unitedStates = UnitedStates.objects.all()
country_choices = []
for item in countries:
country_choices.append(countries.name)
state_choices = []
for item in unitedStates:
state_choices.append(unitedStates.name)
rsb_client_type = forms.ChoiceField(widget = forms.Select(), choices = client_type, required = True)
rsb_first_name = forms.CharField(max_length = 25, required = True)
rsb_last_name = forms.CharField(max_length = 25, required = True)
rsb_company_name = forms.CharField(max_length = 25)
rsb_address1 = forms.CharField(max_length = 50, required = True)
rsb_address2 = forms.CharField(max_length = 50)
rsb_city = forms.CharField(max_length = 50, required = True)
rsb_country = forms.ChoiceField(widget = forms.Select(), choices = country_choices, required = True)
if (rsb_country == 'United States'):
rsb_state = forms.ChoiceField(widget = forms.Select(), choices = state_choices, required = True)
else:
rsb_state = forms.CharField(max_length = 50, required = True)
rsb_zip_code = forms.CharField(max_length = 25, required = True)
rsb_phone_number = USPhoneNumberField(label = "Phone", widget = USPhoneNumberMultiWidget(), required = True)
rsb_email = forms.EmailField(required = True)
Please note that this is far from polished. I'm just simply having trouble accessing my views. I ran python manage.py runserver
and tried http://127.0.0.1:8000/register/
and received the following error:
Could not import rsb.views.registerUser. View does not exist in module rsb.views.
I receive a similar error regardless of which view I try and access.
Please help.
EDIT1:
Sorry, here is the traceback:
Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in resolve
300. sub_match = pattern.resolve(new_path)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in resolve
209. return ResolverMatch(self.callback, args, kwargs, self.name)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in callback
216. self._callback = get_callable(self._callback_str)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/utils/functional.py" in wrapper
27. result = func(*args)
File "/usr/local/lib/python2.7/dist-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in get_callable
101. (lookup_view, mod_name))
Exception Type: ViewDoesNotExist at /register/
Exception Value: Could not import rsb.views.registerUser. View does not exist in module rsb.views.
回答1:
Rename rsb.views.registerUser
to rsb.views.register_user
according to the PEP 8:
Function names should be lowercase, with words separated by underscores as necessary to improve readability.
Now to the problem. You have:
country_choices = []
for item in countries:
country_choices.append(countries.name)
state_choices = []
for item in unitedStates:
state_choices.append(unitedStates.name)
which should be:
country_choices = []
for item in countries:
country_choices.append(item.name)
state_choices = []
for item in unitedStates:
state_choices.append(item.name)
回答2:
This was due to an underlying problem with how I was using Django's ORM to get some database info. The errors didn't seem to point to it...but I've figured out what went wrong. Thanks for the help!
来源:https://stackoverflow.com/questions/12771815/view-does-not-exist-in-module-when-it-does