Django搭建及源码分析(一)

一、关于Django以下两个站点,在使用方面有详细说明。

  http://www.nowamagic.net/academy/part/13/286

  http://www.w3cschool.cc/django/django-tutorial.html

以下是在centos6.0最小系统下,搭建Django的过程,默认Python版本2.6

二、安装Django

1、下载源码使用python setup.py install安装,下载时选择与python环境相兼容的版本。很多高版本的Django不下向兼容低版本的python,如1.7及以上版本不支持python2.6

2、或使用pip django install,但只能下载并安装最新版本的django,无法根据当前python版本选择兼容的版本。

3、也可使用easy_install django安装,但实际报失败,未定位原因。

(easy_install安装:下载ez_setup-0.9.tar.gz,使用python setup.py install安装,pip安装:easy_install安装后,easy_install pip)

三、确认是否安装成功

1、执行python,进入python交互环境,执行import django,成功;

2、执行django-admin命令,可以查看到help信息。

四、创建一个项目,并访问该项目,确认系统配置是否正确。

django-admin.py startproject MyDjProj

进入MyDjProj目录后,执行:python manage.py runserver 0.0.0.0:80

0.0.0.0:是保证其它设备可以通过访问ip地址来访问django,MyDjProj。如在windows环境下,通过浏览器访问10.10.50.109,可访问。

80:是端口,可以使用其它端口。

**注:如果浏览器无法访问,检查iptable是否关闭。

如果浏览器访问正常,说明django环境搭建成功,更多django使用配置,即可参考一节中的两个站点详细说明。

五、安装数据库

Django默认使用sqlite3,如果想使用MySQL,需要安装MySQL-python,才可以通过Django框架使用MySQL。

基础环境安装mysql:包括,

  mysql-5.1.47-4.el6.x86_64
  mysql-devel-5.1.47-4.el6.x86_64
  mysql-server-5.1.47-4.el6.x86_64
  mysql-libs-5.1.47-4.el6.x86_64

安装MySQL-python,使用:

  pip install MySQL-python

安装前,必须保证系统已安装python-devel的包,否则会报缺少python相关的.h文件,如"_mysql.c:29:20: error: Python.h: No such file or directory"。

(理论上应该也需要安装mysql-devel)

六、如果安装最新版本Django,必须先升级python。

  1、首先下载源tar包

    可利用linux自带下载工具wget下载,如下所示:

      wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tgz

    或从网上下载Python-3.1.2.tar.bz2版本,下载完成后到下载目录下,解压

    bunzip2 Python-3.1.2.tar.bz2

    tar -xvf Python-3.1.2.tar

  2、安装

    在编译前先在/usr/local建一个文件夹python3(作为python的安装路径,以免覆盖老的版本)

      mkdir /usr/local/python3

    开始编译安装

      ./configure --prefix=/usr/local/python3;make;make install

  3、更改bin文件。

    此时没有覆盖老版本,再将原来/usr/bin/python链接改为别的名字

      mv /usr/bin/python /usr/bin/python_old

    再建立新版本python的链接

      ln -s /usr/local/python3/bin/python3 /usr/bin/python

    这个时候输入

      python

    就会显示出python的新版本信息。

  PS:如果不建立新安装路径python3,而是直接默认安装,则安装后的新python应该会覆盖linux下自带的老版本,也有可能不覆盖,具体看安装过程了,这个大家可以自己试验下,当然如果还想保留原来的版本,那么这种方法最好不过了。

  4、在python3.4版本中easy_install及pip工具已默认安装,使用此工具可安装自动下载并安装发布的python项目/工具。

  easy_install只提供了安装功能,pip提供了install及uninstall。

  5、安装时可能遇到的问题

  •  报错:“Python build finished successfully!

      The necessary bits to build these optional modules were not found:
      _bz2 _dbm _gdbm
      _lzma _sqlite3 _tkinter
      readline
      To find the necessary bits, look in setup.py in detect_modules() for the module‘s name.

      ”

      可暂忽略,但后续如果需要使用这些模块时,需要安装模块,重新安装python,所以,最好是将这些模块都安装后,再进行后续工作。

      模块对应包如下:

        

模块 依赖 说明
_bsddb bsddb Interface to Berkeley DB library。Berkeley数据库的接口
_curses ncurses Terminal handling for character-cell displays。
_curses_panel ncurses-devel A panel stack extension for curses。
_sqlite3 sqlite-devel DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_ssl openssl-devel TLS/SSL wrapper for socket objects。
_tkinter tk-devel a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185 old bsddb module 老的bsddb模块,可忽略。
bz2 bzip2-devel Compression compatible with bzip2。bzip2-devel
dbm bsddb(安装gdbm-devel即可) Simple “database” interface。
dl N/A Call C functions in shared objects.Python2.6开始,已经弃用。
gdbm gdbm-devel.i686 GNU’s reinterpretation of dbm
imageop N/A Manipulate raw image data。已经弃用。
readline readline-devel GNU readline interface
sunaudiodev N/A Access to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlib Zlib Compression compatible with gzip
_lzma xz-devel compression utils
  • 报错“Ignoring ensurepip failure: pip 6.0.8 requires SSL/TLS”,需要安装openssl-devel包。
  • yum命令执行失败。由python2.6升级到python3.4版本,会遇到yum命令执行失败的问题,是由于/usr/bin/yum命令是python解释
    器来解析的,而python这块的兼容性不太好,升级后,会遇到语法错误执行失败。解决方法一:升级yum;解决方法二:修改/usr/bin/yum,
    将第一行,修改为#!/usr/bin/python2.6
  • 如果系统时间不正确,那么有可能在make的时候循环进行./configure的操作,无法进入真正的make环节。
时间: 2024-10-02 00:56:15

Django搭建及源码分析(一)的相关文章

Django搭建及源码分析(三)---+uWSGI+nginx

每个框架或者应用都是为了解决某些问题才出现旦生的,没有一个事物是可以解决所有问题的.如果觉得某个框架或者应用使用很不方便,那么很有可能就是你没有将其使用到正确的地方,没有按开发者的设计初衷来使用它,当你将一个框架的优势使用到极致时一定是非常舒服和顺手的一件事.但同时也有可能衍生另一个问题,这个框架只解决了你的问题一,没有解决问题二.三等等,因此,就出现了多个框架/应用相结合的情况.比如Django + uWSGI + nginx. 本人初学python,找了一些实例进行了一些操作,以下纯属目前的

Django搭建及源码分析(二)

本节从由Django生成的manage.py开始,分析Django源码.python版本2.6,Django版本1.6.11. manage.py代码很简单. #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MyDjProj.settings") from d

Django如何启动源码分析

Django如何启动源码分析 启动 我们启动Django是通过python manage.py runsever的命令 解决 这句话就是执行manage.py文件,并在命令行发送一个runsever字符串 解析manage.py #!/usr/bin/env python import os import sys if __name__ == "__main__": #os.environ.setdefault 方法可以修改系统环境变量,但是只能os.environ 只能影响到当前运行

Django rest framework源码分析(一) 认证

一.基础 最近正好有机会去写一些可视化的东西,就想着前后端分离,想使用django rest framework写一些,顺便复习一下django rest framework的知识,只是顺便哦,好吧.我承认我是故意的,因为我始终觉得,如果好的技术服务于企业,顺便的提高一下自己.大家都很开心不是不.再次强调一下,真的只是顺便. 安装吧 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework

Django框架 --CBV源码分析、restful规范、restframework框架

一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view()) 2.as_view方法 as_view是一个类方法,实际上是一个闭包函数(内层函数包含对外层作用域的使用) 请求来了以后,调用as_view方法,调用函数中的view方法,view方法是调用了dispatch方法 @classonlymethod def as_view(cls, **initkwargs): def view(req

Django 之restfromwork 源码分析之--视图组件

restframework 源码分析以及使用 mixins 中的五种类方法 from rest_framework import mixins # mixins 中一种有五种类 # 第一种:用户保存数据 class CreateModelMixin(object): """ Create a model instance. """ def create(self, request, *args, **kwargs): # 序列化的类的对象 ser

django中CBV源码分析

前言:Django的视图处理方式有两种: FBV(function base views) 是在视图里基于函数形式处理请求. CBV(class base views)是在视图里基于类的形式处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以

Django rest framework源码分析(4)----版本

版本 新建一个工程Myproject和一个app名为api (1)api/models.py from django.db import models class UserInfo(models.Model): USER_TYPE = ( (1,'普通用户'), (2,'VIP'), (3,'SVIP') ) user_type = models.IntegerField(choices=USER_TYPE) username = models.CharField(max_length=32,u

Django的settings源码分析

首先需要在settings文件中导入,然后查看settings源码 from django.conf import global_settings,settings 点进去LazySettings我们会发现它是一个类,所以settings是类实例化出来的对象,这里利用了单例模式. 然后我们点入manage.py文件中看到 最后点入Settings类 原文地址:https://www.cnblogs.com/baohanblog/p/12164257.html