View does not exist in module - when it does

旧巷老猫 提交于 2020-01-01 18:17:59

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!