分类目录归档:Python

nginx使用非80端口做反代理 Django会重定向到错误端口的问题

使用nginx做反代理,设置的访问端口不是80,但是当打开网站重定向到登陆页面的时候,却转向到80端口上,导致打不开的问题。

解决办法

当一个Django应用部署在代理或负载均衡器后面的时候,解决这个问题需要依赖 X-Forwarded-Host 报头提供转发地址。

首先,添加下面字段到 nginx 的主机配置文件(插入到 location 部分),用于配置 nginx 发送出合适的报头:

其次,添加下面字段到 Django settings.py 文件,用于配置 Django 信任接收到的 X-Forwarded-Host 报头:

现在它应该能正常工作了。

另外,出于安全原因,应用不应该无条件信任接收到的 X-Forwarded-Host 参数,正确的做法是在Django settings.pyALLOWED_HOSTS配置中加入可信任的域名或者IP。

参考:django admin redirects to wrong port on save

在Ubuntu中使用pyodbc 连接 MS SQl servers

安装依赖包

Edit the file /etc/freetds/freetds.conf and replace placeholders appropriately. Note that we are calling our server sqlserver.

Edit /etc/odbcinst.ini like this:

Edit /etc/odbc.ini like this, to add a data source named sqlserverdatasource:

If everything is fine, with the help of pyodbcit should be really easy! You may try the following snippet:

解决中文字符乱码 问号的问题:

添加一个配置参数unicode_results=True

参考:

http://www.tryolabs.com/Blog/2012/06/25/connecting-sql-server-database-python-under-ubuntu/

http://blog.csdn.net/jw083411/article/details/8940574

在Django template的表单中单选和多选字段加入”添加另一个“的按钮

首先,在表单template引入

然后,在form.py 文件中要修改的 form class 加入

注:

MODEL部分,替换为新增数据要引用到的model

FIELD部分,替换为要添加按钮的表单字段

在Django模型中添加ManyToManyField字段后手动更新数据库

例子,假设添加了以下字段到 project App 的 product model,需要更新现有数据库

首先,执行下面命令以便导出生成 project App 数据库的sql命令

然后,找到创建对应 project_product_ref table 的命令

最后,在数据库里执行上述SQL命令添加table。