Suselinux下Django开发备忘

原创 2017年01月02日 21:53:48

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>');

        }

    );

});

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SuseLinux 10 sp2 LAMP安装备忘

因 一、系统安装 1、安装界面上先选择屏幕分辨率,按F3选择1024*768,因为系统安装时的显卡驱动有可能不支持高分辩率。 2、修改分区,选择自定义分区。 先划分三个主分区: ...
  • zhoury
  • zhoury
  • 2014-06-18 21:34
  • 1930

ubuntu14.04.5 安装python+django开发环境安装 salt-minion 第三方模块版本升级(备忘)

系统版本 ubuntu14.04.5   python版本Python 2.7.6  1.安装pip。 apt-get install python-pip 2.安装django==1.8。 pip ...

Django中的查询(备忘)

Html代码: Html代码: [java] view plaincopyprint? class="pageHeader">"return navTabSearch(...

django 1.9.7 备忘

使用Mysql 多数据库联用 部署nginx 1 安装nginx supervisor uwsgi 2 测试uwsgi 3 用supervisor管理uwsgi 4 配置nginx1. 使用Mysql...

容器化Django+Redis+HAProxy应用栈搭建备忘

最近参照浙江大学SEL实验室所著的《Docker容器与容器云》体验了一把使用Docker构建Django+Redis+HAProxy应用栈。由于包括docker的以上几种软件持续更新的原因,按照原书中...

django备忘

1. django注释 {#。。。。。#} 2. django过滤器 {{ name | lower }},将name变量的值转化成小写; {{ my_text|escape|linebr...

Debian环境 Python + Django + Nginx + uWSGI + MySQL 配置备忘

最近尝试把项目迁移到Python环境下,特别新装了一台干净的Debian系统,准备重新配置环境,上网找了一些运行Python Web的环境方案,最后敲定Nginx+uWSGI组合,Nginx用得比较多...

DJANGO基础学习之模板过滤备忘

{{ name | lower }} 小写 {{ my_text|escape|linebreaks }} 先转义文本到HTML,再转换每行到标签 {{ bio | truncatewords:”...

OCX控件开发备忘

  • 2012-09-06 16:49
  • 206KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)