使用 Django 和 a2 服务器将视图链接到网页

Posted

技术标签:

【中文标题】使用 Django 和 a2 服务器将视图链接到网页【英文标题】:Linking views to webpage with Django and a2 servers 【发布时间】:2016-01-17 06:38:58 【问题描述】:

我希望有人可以帮助我解决我遇到的这个问题,因为它看起来很简单,但在过去的几个小时里我一直在努力解决这个问题,没有得到任何安慰。好的,所以我按照 A2 托管指南 here 设置了 Django。

我只是无法与我的 views.py 文件通信。

让我给你看一些文件,因为我希望它只是一些明显的错误。

public_html/mysite/mysite/setup.py:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'nfl'
)

DATABASES = 
'default': 
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '*******',
    'USER': '*******',
    'PASSWORD': '***',
    'HOST': '',
    'PORT': '5432',


STATIC_URL = '/static/'
TEMPLATE_DIRS = (
    "nfl/templates",

)

public_html/mysite/mysite/urls.py:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^home/', 'nfl.views.home', name='home'),

]

public_html/mysite/nfl/views.py:

from django.shortcuts import render_to_response
import nfldb
import requests
# Create your views here.
def home(request):
    db = nfldb.connect()
    q = nfldb.Query(db)
    year = request.GET['year']
    if year is none:
            year = 2014


    q.game(season_year=year, season_type='Regular')
    qb = []
    for pp in q.sort('passing_yds').limit(10).as_aggregate():
            qb.append(pp)
    return render_to_response('index.html', 'qb' : qb)

public_html/mysite/nfl/templates/index.html:

just a helloworld html file to test

.htaccess:

AddHandler fcgid-script .fcgi
RewriteEngine on
# Set up static content redirect:
RewriteRule static/(.+)$ mysite/public/static/$1
# The following two lines are for FastCGI:
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^(.*)$ application.fcgi/$1 [QSA,L]

当我进入我的域时,我只是在您的第一个 Django 应用页面上得到基本的恭喜

那么我在这里错过了什么?我从本地机器复制了大部分内容,因为它在本地主机上使用 Django runserver 工作,但现在我似乎无法链接我的视图

如果需要任何其他信息或者是否有更好的网站可以访问,请告诉我。

我的设置:

Python:2.7 Django:1.85

【问题讨论】:

@@panthor314 “当我访问我的域时”是指 domain.com 吗?因为在您的 URLs.py 中,为了访问您的“主页”视图,您必须转到“^home/”,即 domain.com/home 哇,这似乎有效(谢谢!!!)......现在它说没有名为 requests 的模块,即使它已安装...... 当它引发“没有名为请求的模块”错误时,它是否指向您的 views.py 中的“导入请求”行?如果是,似乎 requests 不是内置模块。在此处查看答案:***.com/questions/17309288/… 您是否在生产(当前)服务器上使用“pip install requests”安装它?如果没有,您具体是如何安装的? @user2719875 是的,它指向我的views.py,但是是的,我在我的服务器上安装了它,不知道为什么它无法识别 你能给我“pip freeze”命令的输出吗? 【参考方案1】:

如果您访问 domain.com,则会出现“恭喜您的第一个 django 应用程序”页面,因为在您的 URLs.py 中,您确实为

url(r'^')

为了不显示此页面,而是显示您的 index.html 页面,您应该这样做

urlpatterns = [
    url(r'^', 'nfl.views.home', name='home'),
]

【讨论】:

以上是关于使用 Django 和 a2 服务器将视图链接到网页的主要内容,如果未能解决你的问题,请参考以下文章

如何将表单视图作为 django 中的上下文传递给另一个视图?

Django - 一个 URL 链接到两个视图?

如何在 Django 通用列表视图类中使用 slugfield 创建链接?

在 Django 的父管理视图中将子对象链接到父对象

无法使用视图名称 (django-rest-framework) 解析超链接关系的 URL

Django视图和模板