当我使用sql数据库在azure中部署我的django应用程序时,它显示The page cannot be displayed because an internal server error has occurred
。
但是当我在没有sql数据库的情况下部署它时它工作正常。有什么问题?
错误日志
最有可能的原因是:
IIS received the request; however, an internal error occurred during the processing of the request. The root cause of this error depends on which module handles the request and what was happening in the worker process when this error occurred.
IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.
IIS was not able to process configuration for the Web site or application.
The authenticated user does not have permission to use this DLL.
The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.
答案 0 :(得分:1)
我尝试重现您的问题,但失败了。我成功地使用django-mssql将我的django应用程序部署到sqlserver数据库的azure中。
请参考我所做的步骤:
第1步:在 settings.py
中添加配置DATABASES = {
'default': {
'NAME': '***',
'ENGINE': 'sqlserver_ado',
'HOST': '***.database.windows.net',
'USER': '***',
'PASSWORD': '***',
'OPTIONS': {
'provider': 'SQLOLEDB',
'use_legacy_date_fields': 'True'
}
}
}
第2步:在查询结果中添加测试代码:
from django.db import connection
def my_custom_sql():
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM ***")
row = cursor.fetchone()
return row
步骤3:安装django-mssql
包并依赖KUDU。
步骤4:将django app部署到azure并在浏览器中访问url。
希望它对你有所帮助。
更新答案:
首先,当您尝试使用django-mssql构建django时出现以下错误,因为您的django版本太高了。
从django-mssql doc,您可以看到:Django 1.8 is supported by the current release
,您的django版本为1.11.8
。
其次,您在评论中提到的django-pyodbc
包只支持django 1.10
。你可以参考这个doc。
所以,我建议您现在使用支持django 1.11
的{{3}}包。
您可以按照上述文档中的教程进行操作。
settings.py中的配置
DATABASES = {
'default': {
'NAME': '***',
'ENGINE': 'sql_server.pyodbc',
'HOST': '***.database.windows.net',
'USER': '***',
'PASSWORD': '***',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
}
}
}
我的django版本和你一样,对我有用。
如有任何疑虑,请告诉我。
更新答案2:
我刚使用Visual Studio 2017 python django模板。
我的 view.py :
"""
Definition of views.
"""
from django.shortcuts import render
from django.http import HttpRequest
from django.template import RequestContext
from datetime import datetime
from django.db import connection
def my_custom_sql():
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM dbo.student")
row = cursor.fetchone()
return row
def home(request):
"""Renders the home page."""
assert isinstance(request, HttpRequest)
return render(
request,
'app/index.html',
{
'title':'Home Page',
'year':datetime.now().year,
}
)
def contact(request):
"""Renders the contact page."""
assert isinstance(request, HttpRequest)
return render(
request,
'app/contact.html',
{
'title':'Contact',
'message':'Your contact page.',
'year':datetime.now().year,
}
)
def about(request):
row = my_custom_sql()
"""Renders the about page."""
assert isinstance(request, HttpRequest)
return render(
request,
'app/about.html',
{
'title': row,
'message':'Your application description page.',
'year':datetime.now().year,
}
)
请注意my_custom_sql()
功能。
我的 about.html :
{% extends "app/layout.html" %}
{% block content %}
<h2>{{ title }}.</h2>
<h3>{{ message }}</h3>
<p>Test Something!</p>
{% endblock %}
pyodbc
中的settings.py
设置只是参考我之前的更新答案。
答案 1 :(得分:0)
请启用Diagnostics Logging以调试您的应用程序,并确定您的应用程序无法正常运行的真正原因。 This博客文章还可以帮助您排除故障 - 记录您的应用程序。