3

对 django 来说非常新。我使用的是 1.5.2 版本,并且刚刚进行了全新安装。我正在使用 django 开发服务器;我将在未来转向 Apache,但在迈出这一步之前,我想了解 django 独特的 MVC 方法论。

所以我通过我的项目目录(django_books)中的终端使用“python manage.py runserver 0.0.0.0:8000”启动django服务器。我收到此错误:

ViewDoesNotExist at /
Could not import django_books.views.home. Parent module django_books.views does not exist.

所以我的观点不存在。我的 view.py 文件是空的,因为我遵循的教程没有包含一个。我不确定这是否是问题所在。如果是,我如何创建这个文件(里面有什么)?

目录结构:

django_books
    beer (from the tutorial lol)
        migrations
        __init__.py
        models.py
        views.py
    random_book
        (same as beer above)
    django_books (this is my actual django project, beer and random_book are apps)
        __init__.py
        settings.py
        urls.py
        wsgi.py
    media
    .gitignore
    manage.py
    requirements.txt (output from pip freeze command)

网址.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('',
        # Examples:
        url(r'^$', 'django_books.views.home', name='home'),
        # url(r'^django_books/', include('django_books.foo.urls')),

        # Uncomment the admin/doc line below to enable admin documentation:
        # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

        # Uncomment the next line to enable the admin:
        url(r'^admin/', include(admin.site.urls)),
    )
4

2 回答 2

2

如果您保持 urls.py 的原样,这意味着您需要在 /django_books/django_books/ 中创建 views.py

在该文件中,创建一个名为home.

或者,如果你在 /django_books/beer/ 中有任何函数,你可以从 urls.py 中引用它们。

urls.py 所做的只是将 python 路径暴露给函数并在那里路由 URL。因此,您可以看到在 django_books/django_books 中没有名为视图的模块或文件,这就是失败的原因。

于 2013-08-28T19:02:27.707 回答
1

View 基本上是一个接收HTTP Request和返回的python函数HTTP Response

引用自文档

视图函数,或简称视图,只是一个接受 Web 请求并返回 Web 响应的 Python 函数。此响应可以是网页的 HTML 内容、重定向、404 错误、XML 文档或图像。. . 或任何东西,真的。视图本身包含返回该响应所需的任意逻辑。这段代码可以放在任何你想要的地方,只要它在你的 Python 路径上。没有其他要求——可以这么说,没有“魔法”。为了将代码放在某个地方,约定是将视图放在一个名为 views.py 的文件中,该文件位于您的项目或应用程序目录中。

这一行将您网站url(r'^$', 'django_books.views.home', name='home'),urls.py索引指向视图 - 您应该创建它。/home

创建一个名为homein的 python 函数views.py

from django.http import HttpResponse
import datetime

def home(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

重新启动您的开发服务器并访问http://127.0.0.1:8000.

仅供参考,请仔细阅读教程,第 3 部分是关于处理 url 和视图。

于 2013-08-28T18:58:48.087 回答