Suselinux下Django开发备忘

pythonDjango开发备忘

一、Django安装,下载Django安装包。(注:mod_python模块不再支持Django1.5以上版本)

1) 首先需要在YaST中安装  python-setuptools包,然后执行安装

# python setup.py install

# python

>> import django

>> django.VERSION

开启SetEnv模块,或在yast中开启。(注,我没找到)

# sudo a2enmod env

2) 创建项目 phinfo:

# cd /srv/www/htdocs

# django-admin.py startproject phinfo

开启测试服务器命令为# python manage.py runserver注:默认端口为8000

# cd phinfo

# python manage.py runserver 10.120.65.10:8000

 

二、安装mod_wsgi

1) 先安装apache2开发包,下载mod_wsgi-4.5.6.tar.gz

# tar zxvf mod_wsgi-4.5.6.tar.gz

# cd mod_wsgi-4.5.6

# python setup.py install

 

2) wsgi配置,注意:首先要在http服务配置中禁用mod_python

首配置httpd.confloadmodule wsgi_module /somepath/mod_wsgi.so

然后再httpd服务器中激活

# sudo a2enmod wsgi

接下来在httpd.conf中配置phinfo项目

# cd /etc/apache2/

# vi http.conf

增加以下内容:

WSGIScriptAlias /phinfo /srv/www/htdocs/phinfo/phinfo/wsgi.py

WSGIPythonPath /srv/www/htdocs/phinfo

<Directory /srv/www/htdocs/phinfo/phinfo>

  <IfModule mod_access_compat.c>

    Order allow,deny

    Allow from all

  </IfModule>

</Directory>

 

编辑 /srv/www/htdocs/phinfo/phinfo/wsgi.py 如下:

# filename django.wsgi

import os,sys

 

os.environ.setdefault('DJANGO_SETTINGS_MODULE','phinfo.settings')

os.environ['PYTHON_EGG_CACHE']='/tmp'

 

from django.core.wsgi import get_wsgi_application

application=get_wsgi_application()

 

3) 最后进入项目,编辑urls.pyviews.py等开始项目开发。

views.py

from django.http import HttpResponse,Http404

import datetime

def hello(req):

    return HttpResponse("<h1>Hello World, It is phinfo.</h1>")

def homepage(req):

    return HttpResponse("This is phinfo's Homepage")

 

urls.py

from django.conf.urls import url

#from django.contrib import admin

from phinfo.view import hello,homepage

urlpatterns = [

    url(r'^hello/$', hello),

    url(r'^$', homepage),

]

 

调用: http://127.0.0.1/phinfo/hello .......

 

三、静态资源配置

1) 创建静态文件目录

/srv/www/htdocs/phinfo下创建目录 static,目录下开设 cssimgjs等静态文件目录。

2) 在httpd.conf中配置

Alias /static /srv/www/htdocs/phinfo/static

<Directory /srv/www/htdocs/phinfo/static>

  <IfModule mod_access_compat.c>

    Require all granted

  </IfModule>

</Directory>

 

3) 配置settings.py

STATIC_URL = '/static/'      #此值应与httpd.conf中配置相同

 

4) 静态文件使用

{% load static %}

<img src="{% static 'img/01.jpg' %}" alt="img01" >

 

四、基本模板配置

1) 在/srv/www/htdocs/phinfo开设模板目录 templates,可以开子目录分类,如html

2) 编辑settings.py,更改TEMPLATES DIRS项。

TEMPLATES = [

    {

        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        'DIRS': [

            os.path.join(BASE_DIR,'templates'),

        ],

...

    },

]

3) 在templates/html下编辑base.html,以及current_datetime.html

基本模板base.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>

{% load static %}

<head>

  <title>{% block title %}{% endblock %}</title>

</head>

<body>

  <h1>My helpful timestamp site</h1>

  {% block content %}{% endblock %}

  {% block image %} {% endblock %}

  {% block footer %}

  <hr>

  <p>Thanks for visiting my site.</p>

  {% endblock %}

</body>

<html>

 

实际扩展模板current_datetime.html

{% extends "html/base.html" %}

{% load static %}

{% block title %} The current time {% endblock %}

{% block content %}

<p> It is now {{ current_date }}. </p>

{% endblock %}

{% block image %}

<p>{% static 'img/01.jpg' %}</p>

<img src="{% static 'img/01.jpg' %}" alt="img01" >

{% endblock %}

 

4)模板应用,编辑views.py

from django.http import HttpResponse,Http404

import datetime

from django.template import loader,Context,RequestContext

from django.shortcuts import render_to_response

 

def current_datetime(req):

    current_date = datetime.datetime.now()

    return render_to_response('html/current_datetime.html',locals())

 

 

五、新建应用

1)在phinfo下新建应用phadmin

# django-admin.py startapp phadmin

2) 编辑settings,配置INSTALLED_APPS 

INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

'django.contrib.staticfiles',

    ‘phadmin’,

]

3) 编辑views.pyurls.py

views.py

from django.shortcuts import render

from django.http import HttpResponse,Http404

import datetime

from django.template import loader,Context,RequestContext

from django.shortcuts import render_to_response

def adminhello(req):

    return HttpResponse("<h1>Hello World, It is phinfo/phadmin.</h1>")

def adminhomepage(req):

    return HttpResponse("This is phinfo/phadmin's Homepage")

urls.py

from django.conf.urls import url

#from django.contrib import admin

from phinfo.view import hello,homepage,current_datetime,ctime

from phadmin.views import *

urlpatterns = [

    url(r'^ctime/(\d{1,2})/$', ctime),

    url(r'^current_datetime/$', current_datetime),

    url(r'^hello/$', hello),

    url(r'^$', homepage),

    url(r'^phadmin/hello/$', adminhello),

    url(r'^phadmin/$', adminhomepage),

]

4)调用

http://.../phinfo/phadmin/hello

 

5)urlinclude的使用

phadminurls.py

from django.conf.urls import url

from phadmin import views

 

urlpatterns = [

    url(r'^hello/$', views.hello),

    url(r'^$', views.homepage),

    url(r'^infolist/$', views.infolist),

    url(r'^infoajax/$', views.infoajax),

]

phinfo下的urls.py

from django.conf.urls import url,include

from django.contrib import admin

from phinfo.view import hello,homepage,current_datetime,ctime

 

urlpatterns = [

    url(r'^ctime/(\d{1,2})/$', ctime),

    url(r'^current_datetime/$', current_datetime),

    url(r'^hello/$', hello),

    url(r'^$', homepage),

    url(r'^phadmin/', include('phadmin.urls')),

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

]


六、数据库

1) 配置数据库,更改setting.py

DATABASES = {

    'default': {

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

        'NAME': 'phinfodb',

        'USER': 'phinfo',

        'PASSWORD': '85124206',

        'HOST':'127.0.0.1',

        'PORT':'3306',

    }

}

2) 根据数据库生成Models,注意中文表名生成会出错,另外所有表都应有一主键。可以新建一app名为model,在model下生成models.py

# python manage.py inspectdb > model/models.py

 

3) 数据库查询操作


查询所有: Phinfo.objects.all()

查询一个记录:Phinfo.objects.get(name=name)

查询满足指定条件记录:

    Phinfo.objects.filter(name=name) #等于name_exact,名称严格等于abc

Phinfo.objects.filter(name__iexact=’abc’)  #名称为abc,但不区分大小写

Phinfo.objects.filer(name__contains=’abc’) #名称中包含’abc’,区分大小写

Phinfo.objects.filer(name__icontains=’abc’) #名称中包含’abc’,不区分大小写

Phinfo.objects.filer(name__regex=’^abc’) #正则表达式

Phinfo.objects.filer(name__iregex=’abc’) #正则表达式,不区分大小写

Phinfo.objects.exclude(name__contains=’abc’) #配出名称中包含’abc’

Phinfo.objects.filer(name__contains=’abc’).exclude(age=23) #名称中包含’abc’,排除年龄是23

 

七、Ajax

1) @csrf_exempt标签,避免csrf认证引起的403错误。JsonResponse参数为一个字典列表,这时一定要设置safe=False

from django.http import JsonResponse

from django.views.decorators.csrf import csrf_protect,csrf_exempt

@csrf_exempt

def infoajax(req):

    infolist= Phinfo.objects.all()[20:30]

    infos = []

    for info in infolist:

        info_dict = {}

        info_dict['id'] = info.id

        info_dict['title'] = info.title

        info_dict['lb'] = info.lb

        infos.append(info_dict)

 

return JsonResponse(infos,safe=False)

 

urls.py

from django.conf.urls import url

from phadmin import views

 

urlpatterns = [

    url(r'^hello/$', views.hello),

    url(r'^$', views.homepage),

    url(r'^infolist/$', views.infolist),

    url(r'^infoajax/$', views.infoajax),

 

]

 

2) 客户端

$(document).ready(function() {

    //getInfos();

    $.post (

        'infoajax/',     #注意调用url

        {},

        function(data) {

            var json = eval(data);

            $('#infodiv').html('');

            $('#infodiv').append('<ul>');

            for(i=0;i<json.length;i++) {

                $('#infodiv').append('<li>' + json[i].title +'</li>');

            }

            $('#infodiv').append('</ul>');

        }

    );

});

 


阅读更多
文章标签: python django
个人分类: Python 学习笔记
想对作者说点什么? 我来说一句

SUSElinux管理手册

2010年06月04日 10.03MB 下载

Django开发宝典

2018年03月30日 66.72MB 下载

SuSELinux参考

2007年05月10日 10.5MB 下载

django web开发指南

2013年06月10日 9.84MB 下载

Linux安装速成图解教程

2008年12月23日 5.48MB 下载

轻量级Django

2018年02月01日 786KB 下载

django官方文档1.8

2015年02月28日 5.79MB 下载

没有更多推荐了,返回首页

不良信息举报

Suselinux下Django开发备忘

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭