python环境搭建及web项目框架开发完整记录

python

1.1 python 环境安装

1.1.1  Window平台安装 Python:

python-2.7.11.msi 

1.1.2  Linux 平台安装 Python:

wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2

tar jxvf /root/Python-2.7.3.tar.bz2

编译安装

cd /root/Python-2.7.3.tar.bz2./configure

make && make install

Python默认安装目录在/usr/local/lib/python2.7

查看一下刚才安装的版本/usr/local/bin/python -V,看到了 2.7.3吧

更改系统默认版本

mv /usr/bin/python /usr/bin/python.bak

export PATH=$PATH:/usr/local/bin/python

ln -s /usr/local/bin/python2.7 /usr/bin/python

1.1.3  Python其它组件安装:

python setup.py install

C:\Python27\Lib\site-packages\Django-1.8.12-py2.7.egg\django\bin

1.2     Python 基础教程

http://www.runoob.com/python/python-basic-syntax.html

 

http://www.iteye.com/topic/1137934

1.3  weblogic健康检查

1.3.1  基于weblogic下 Python:

java -cp /root/wls1032/wlserver_10.3/server/lib/weblogic.jarweblogic.WLST /root/weblogic.py

python a.py

vi /etc/crontab 

 

*/5 * * * * /root/bin/checkstatussh java -cp /root/wls1032/wlserver_10.3/server/lib/weblogic.jar weblogic.WLST/root/weblogic.py

1.4      pythonweb框架之Django

1.4.1  linux安装 Django:

从Django的官网下载tgz包:https://www.djangoproject.com/download/

python setup.py install

1.4.2  新建一个 django project

python django-admin.py startprojectproject-name

一个project 为一个项目,project-name项目名称,改成你自己的,要符合Python 的变量命名规则(以下划线或字母开头)

1.4.3  新建 app

python manage.py startapp app-name

django-admin.py startapp app-name

一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

1.4.4  同步数据库

   

cd c:\Python27\Lib\site-packages\Django-1.8.12-py2.7.egg\django\bin\computer

 

pythonmanage.py syncdb

 

注意:Django 1.7.1及以上的版本需要用以下命令

pythonmanage.py makemigrations

 

python manage.pymigrate

 

pythonmanage.py runserver

 

这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。

备注:对已有的models 进行修改,Django 1.7之前的版本的Django都是无法自动更改表结构的,不过有第三方工具 south,详见Django数据库迁移 一节。

1.4.5  使用开发服务器

开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。

pythonmanage.py runserver

#当提示端口被占用的时候,可以用其它端口:

pythonmanage.py runserver 8001

pythonmanage.py runserver 9999

(当然也可以kill掉占用端口的进程)

#监听所有可用 ip (电脑可能有一个或多个内网ip,一个或多个外网ip,即有多个ip地址)

pythonmanage.py runserver 0.0.0.0:8000

#如果是外网或者局域网电脑上可以用其它电脑查看开发服务器

#访问对应的ip加端口,比如 http://172.16.20.2:8000

1.4.6  清空数据库

pythonmanage.py flush

此命令会询问是 yes 还是 no, 选择yes 会把数据全部清空掉,只留下空表。

1.4.7  创建超级管理员

pythonmanage.py createsuperuser

#按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填

#修改用户密码可以用:

pythonmanage.py changepassword username

1.4.8  导出数据 导入数据

pythonmanage.py dumpdata appname > appname.json

pythonmanage.py loaddata appname.json

关于数据操作详见:数据导入数据迁移,现在了解有这个用法就可以了。

1.4.9  Django 项目环境终端

      python manage.py shell

如果你安装了 bpython 或 ipython 会自动用它们的界面,推荐安装 bpython。

这个命令和直接运行python 或 bpython 进入 shell 的区别是:你可以在这个 shell 里面调用当前项目的 models.py 中的API,对于操作数据,还有一些小测试非常方便。

1.4.10 数据库命令行

           python manage.py dbshell

Django会自动进入在settings.py中设置的数据库,如果是 MySQL 或postgreSQL,会要求输入数据库用户密码。

在这个终端可以执行数据库的SQL语句。如果您对SQL比较熟悉,可能喜欢这种方式。

1.4.11  更多命令

      终端上输入 pythonmanage.py 可以看到详细的列表,在忘记子名称的时候特别有用。

 

1.5     项目例子

 

Django-1.8.12-py2.7.egg\django\bin

1.5.1  Django结构

1.5.2  bin目录命令

1.5.3  新建项目

 

python django-admin.py startproject computer

一个project 为一个项目,project-name 项目名称,改成你自己的,要符合Python 的变量命名规则(以下划线或字母开头)

1.5.4  新建 app

python manage.py startapp base

1.5.5  基本组成

 

 

1.5.5.1 settings.py

 

import os

 

BASE_DIR =os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

 

SECRET_KEY ='mmac_9(if64i5pz$j_awu$nv6_zw^dmz0t+mdqqy0+ydyp5v*3'

 

DEBUG = True

 

ALLOWED_HOSTS = []

 

 

INSTALLED_APPS = [

   'django.contrib.admin',

   'django.contrib.auth',

   'django.contrib.contenttypes',

   'django.contrib.sessions',

   'django.contrib.messages',

   'django.contrib.staticfiles',

   'base',

]

 

 

 

 

DATABASES = {

   'default': {

       'ENGINE': 'django.db.backends.sqlite3',

       'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

   }

}

 

 

 

LANGUAGE_CODE = 'en-us'

 

TIME_ZONE = 'UTC'

 

USE_I18N = True

 

USE_L10N = True

 

USE_TZ = True

 

# Static files (CSS, JavaScript, Images)

# https://docs.djangoproject.com/en/1.9/howto/static-files/

import os

 

SITE_ROOT =os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')

 

STATIC_ROOT = os.path.join(SITE_ROOT,'static')

 

STATIC_URL = '/static/'

 

STATICFILES_DIRS = (

   ("css", os.path.join(STATIC_ROOT, 'css')),

   ("js", os.path.join(STATIC_ROOT, 'js')),

   ("images", os.path.join(STATIC_ROOT, 'images')),

   ("avatars", os.path.join(STATIC_ROOT, 'avatars')),

   ("font", os.path.join(STATIC_ROOT, 'font')),

)

 

SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'

 

 

 

1.5.5.2   urls.py

 

from django.conf.urls import url

from django.contrib import admin

from base import views as base_views

 

urlpatterns = {

   url(r'^$', base_views.index, name='index'),

   url(r'^main/$', base_views.main, name='main'),

   url(r'^com_home/$', base_views.com_home, name='com_home'),

   url(r'^com_add_view/$', base_views.com_add_view, name='com_add_view'),

   url(r'^com_add/$', base_views.com_add, name='com_add'),

   url(r'^com_view_list/$', base_views.com_view_list,name='com_view_list'),

   url(r'^com_edit_view/(\d+)/$', base_views.com_edit_view,name='com_edit_view'),

   url(r'^com_edit/$', base_views.com_edit, name='com_edit'),

   url(r'^com_delete/$', base_views.com_delete, name='com_delete'),

   url(r'^admin/', admin.site.urls),

 

   url(r'^ser_home/$', base_views.ser_home, name='ser_home'),

   url(r'^ser_add_view/$', base_views.ser_add_view, name='ser_add_view'),

   url(r'^ser_add/$', base_views.ser_add, name='ser_add'),

   url(r'^ser_view_list/$', base_views.ser_view_list,name='ser_view_list'),

   url(r'^ser_edit_view/(\d+)/$', base_views.ser_edit_view,name='ser_edit_view'),

   url(r'^ser_edit/$', base_views.ser_edit, name='ser_edit'),

   url(r'^ser_delete/$', base_views.ser_delete, name='ser_delete'),

}

 

1.5.6  项目应用

 

 

1.5.6.1   models.py

 

from django.db import models

 

 

class Computer(models.Model):

   machine = models.CharField(max_length=20)

   ip = models.CharField(max_length=20)

   username = models.CharField(max_length=30)

   password = models.CharField(max_length=30)

   port = models.CharField(max_length=10)

 

   class Meta:

       db_table = 'computer'

 

 

class Service(models.Model):

   server = models.CharField(max_length=30)

   port = models.CharField(max_length=10)

   url = models.CharField(max_length=100)

   machine = models.ForeignKey(Computer)

 

   class Meta:

       db_table = 'service'

 

 

 

1.5.6.2   views.py

 

 

# -*- coding: utf-8 -*-

from django.http import HttpResponse

from django.shortcuts import render_to_response

from django.views.decorators.csrf importcsrf_exempt

 

from computer.settings import STATIC_URL

from models import Computer

from models import Service

 

 

def index(request):

   base_url = STATIC_URL

   return render_to_response('index.html', {'base_url': base_url})

 

 

def main(request):

   base_url = STATIC_URL

   return render_to_response('main.html', {'base_url': base_url})

 

 

def com_home(request):

   base_url = STATIC_URL

   return render_to_response('com_home.html', {'base_url': base_url})

 

 

@csrf_exempt

def com_view_list(request):

   jq = ""

   if request.method == 'POST':

       jq = request.POST['jq']  # 测试是否能够接收到前端发来的name字段

   computers = {}

   if jq == "":

       computers = Computer.objects.all()

   else:

       computers = Computer.objects.all().filter(machine=jq)

   model = {'msg': '成功', 'code': 1, 'expMsg': " ",'data': computers}

   return render_to_response('com_list.html', {'model': model})

 

 

def com_add_view(request):

   base_url = STATIC_URL

   return render_to_response('com_add.html', {'base_url': base_url})

 

 

@csrf_exempt

def com_add(request):

   machine = ""

   ip = ""

   username = ""

   password = ""

   port = ""

   if request.method == 'POST':

       machine = request.POST['machine']

       ip = request.POST['ip']

       username = request.POST['username']

       password = request.POST['password']

       port = request.POST['port']

   com = Computer(machine=machine, ip=ip, username=username,password=password, port=port)

   com.save()

   return HttpResponse("添加成功")

 

 

def com_edit_view(request, mid):

   computers = Computer.objects.get(id=mid)

   base_url = STATIC_URL

   return render_to_response('com_edit.html', {'base_url': base_url,'computers': computers})

 

 

@csrf_exempt

def com_edit(request):

   mid = ""

   machine = ""

   ip = ""

   username = ""

   password = ""

   port = ""

   if request.method == 'POST':

       mid = request.POST['id']

       machine = request.POST['machine']

       ip = request.POST['ip']

       username = request.POST['username']

       password = request.POST['password']

       port = request.POST['port']

   com = Computer.objects.get(id=mid)

   com.machine = machine

   com.ip = ip

   com.username = username

   com.password = password

   com.port = port

   com.save()

   return HttpResponse("修改成功")

 

 

@csrf_exempt

def com_delete(request):

   mid = ""

   if request.method == 'POST':

       mid = request.POST['id']

   com = Computer.objects.get(id=mid)

   com.delete()

   return HttpResponse("删除成功")

 

 

def ser_home(request):

   mid = ""

   if request.method == 'GET':

       mid = request.GET['machine_id']

   base_url = STATIC_URL

   return render_to_response('ser_home.html', {"machine_id": mid,'base_url': base_url})

 

 

@csrf_exempt

def ser_view_list(request):

   machine_id = ""

   jq = ""

   if request.method == 'POST':

       jq = request.POST['jq']

       machine_id = request.POST['machine_id']

   services = {}

   if jq == "":

       services = Service.objects.all().filter(machine_id=machine_id)

   else:

       services = Service.objects.all().filter(server=jq,machine_id=machine_id)

   model = {'msg': '成功', 'code': 1, 'expMsg': " ",'data': services}

   return render_to_response('ser_list.html', {'model': model})

 

 

def ser_add_view(request):

   machine_id = ""

   if request.method == 'GET':

       machine_id = request.GET['machine_id']

   base_url = STATIC_URL

   return render_to_response('ser_add.html', {'base_url': base_url, 'machine_id':machine_id})

 

 

@csrf_exempt

def ser_add(request):

   server = ""

   port = ""

   url = ""

   machine_id = ""

   if request.method == 'POST':

       server = request.POST['server']

       port = request.POST['port']

       url = request.POST['url']

       machine_id = request.POST['machine_id']

   com = Service(server=server, port=port, url=url, machine_id=machine_id)

   com.save()

   return HttpResponse("添加成功")

 

 

def ser_edit_view(request, mid):

   services = Service.objects.get(id=mid)

   base_url = STATIC_URL

   return render_to_response('ser_edit.html', {'base_url': base_url,'services': services})

 

 

@csrf_exempt

def ser_edit(request):

   mid = ""

   server = ""

   port = ""

   url = ""

   machine_id = ""

   if request.method == 'POST':

       mid = request.POST['id']

       server = request.POST['server']

       port = request.POST['port']

       url = request.POST['url']

       machine_id = request.POST['machine_id']

   com = Service.objects.get(id=mid)

   com.server = server

   com.port = port

   com.url = url

   com.machine_id = machine_id

   com.save()

   return HttpResponse("修改成功")

 

 

@csrf_exempt

def ser_delete(request):

   mid = ""

   if request.method == 'POST':

       mid = request.POST['id']

   com = Service.objects.get(id=mid)

   print com.machine

   com.delete()

   return HttpResponse("删除成功")

 

 

 

1.5.6.3   Templates

1.5.1.2.1  列表页面

 

   

   

       

       

       

   

   

   

   {% for foo in model.data %}

       

           

           

           

       

    {%endfor %}

   

服务 端口 url地址

                {{ foo.server }}

           

{{ foo.port }} {{ foo.url }}

1.5.1.2.2  添加页面

 

   

   首页

   

   

   

   

 

   

 

   

 

   

 

   

 

   

 

   

   

   

 

   

 

   

 

   

 

   

 

   

   

   

   

 

 

   

 

   

   

   

 

 

   

       

           

           

       

       

           

           

       

       

           

           

       

       

           

           

       

       

           

           

       

   

                机器

           

               

           

                IP地址

           

               

           

                用户名

           

               

           

               

           

               

           

                端口

           

               

           

   

       

       

   

 

 

   window.jQuery || document.write("

 

 

 

 

   if("ontouchend" in document) document.write(""+"<"+"/script>");

 

 

 

 

 

 

 

你可能感兴趣的:(Django,python项目,python)