本文共 7325 字,大约阅读时间需要 24 分钟。
>>1.在linux服务器上查看python的安装路径,linux服务器都是自带安装python的,所以不需要安装,查看服务器上的版本是否满足需求,如果不满足需求的话要重新安装。
查看安装路径的方法: 在任意目录下依次执行下面命令: python import sys sys.path>>2.linux相关问题
1.linux系统中有没有注册表的概念? 没有,但有跟注册表相对应的文件,比方说安装软件后它会把这个软件的配置写到一个配置文件里面。2.linux系统中怎样安装软件和删除软件?
3.linux系统中安装了mysql后,还可以在其他目录安装mysql吗?其他软件呢? 4.linux系统中怎样查看已经安装了哪些软件? 5.linux系统中软件一般都安装在哪?像Windows都安装在program files目录下面 6.linux系统中怎样在线安装软件? >>3.下载链接 apache服务器下载mod_python下载链接
mod_wsgi
>>4.Ubuntu在线安装mysql: sudo apt-get install mysql 在线安装必须本地没有安装过此软件,不然会报错,可以先卸载然后再在线安装>>5.一些常用命令
find / -name mysql 查询当前目录下有没有名字为mysql的文件或目录。 service mysql start 启动mysql服务 mysql -u root -p 登录mysql,执行这个命令后会让输入密码,如下所示: Enter password:qweasd123 输入密码后就可以登录进去了。>>6.python版本升级
每个版本都有对应的一套插件,可以都安装下来,它们之间不会产生影响,升级的时候只需要修改一下系统环境变量path就行了。 主要就是把Python26改成Python27,改后path里面关于python的路径如下所示: C:\Python27;C:\Python27\Lib\site-packages\django\bin>>7.请注意 action 为 /add/ ,在 Django 中链接后面一般都要有 '/' ,不然有可能得不到 POST 数据。有关更详细的关于常见问题可以参阅 NewbieMistakes 文档。
>>8.在 form 中的 method="post" 。你当然可以使用 get ,但是在 Django 的设计风格中认为,使用 POST 表示要对数据进行修改,使用 GET 则只是获取,这是一个设计风格,并且不仅仅属于 Django 。如果能够养成习惯是非常好的。
>>9.在python编码中如果有中文的话要显示指定编码格式,在程序的第一行指定,如下所示:
#encoding=utf-8 指定后原来程序里面的中文会变成乱码,这时候可以按Ctrl+Z键取消操作,这时候中文会正常显示过来,然后再按Ctrl+S保存,这样就可以实现修改编码了。>>10.从对模板的使用 (wiki/edit.html) 可以猜到在后面我们要在 templates 中创建子目录了。的确,对于不同的 app ,我们可以考虑将所有的模板都放在统一的 templates 目录下,但为了区分方便,一般都会针对 app 创建不同的子目录。当然也可以不这样,可以放在其它的地方,只要修改 settings.py ,将新的模板目录加进去就行了。
>>11.在 Django 中每个字段都可以有一个提示文本,它是第一个参数,如果没有则会使用字段名。因此我定义的每个字段为了方便都有一个对应的汉字提示文本。
#coding=utf-8 from django.db import models# Create your models here.
class Address(models.Model):
name = models.CharField('姓名', max_length=6, unique=True) gender = models.CharField('性别', choices=(('M', '男'), ('F', '女')), max_length=1, radio_admin=True) telphone = models.CharField('电话', max_length=20) mobile = models.CharField('手机', max_length=11)>>12.unexpected keyword argument 'maxlength'
解决办法吧maxlength改为max_length就可以了
>>13.Django模板:
当使用django的时候,如果模板里面有中文,则支持不是很好,需要在第1行加入 {#utf-8#}这样就可以正常显示了
>>14.
import os print os.path.dirname(os.path.dirname("C:/Documents and Settings/dashan.yin/ab/"))os.path.dirname("C:/test1/test2/") # 返回C:/test1/test2
os.path.dirname(os.path.dirname("C:/test1/test2/")) # 返回C:/test1 相当于两次执行dirname操作得到的是当前目录的父目录。>>15.此模板从基础模板base.html 继承,注意继承的时候路径要带上应用名称art
{% extends "art/base.html" %} >>16.django1.4跟之前版本在form上的区别: from django import newforms as forms在django1.4版本中要改成:from django import forms在django以前的版本中,把django项目发布到apache服务器上时有两个地方需要注意:
一是在settings.py文件中要把DEBUG = True改成DEBUG = False 二是要关掉django项目自带的小型服务器 但在django1.4中,这两点都取消了,不需要这些限制。 (看来当初选择django1.4还是不错的,还有就是有问题多看看官方文档) >>17.在html文件中注释有可能影响程序,比方说下面这段代码: <!--对基础模板中的{% block head %}{% endblock %}部分进行修改--> {% block head %}用户注册{% endblock %} 会报这样的错误: 'block' tag with name 'head' appears more than once 意思就是出现多个head标签>>18.在命令行模式下用dir()命令查看当前路径下都有哪些文件和目录。
>>19.安装好apache后桌面右下角有个图标,退出程序时图标会消失,怎样让图标重新出现?
C:\Program Files\Apache Software Foundation\Apache2.2\bin目录下有个ApacheMonitor.exe文件,双击它就可以出现了。>>20.解决403问题
分两种情况,一种是正常提交,另一种是用ajax提交 正常提交的话,每个表单后面都要有{% csrf_token %}这个标签,在views.py里面相应的方法有两种书写方式: 方法一: c = {} c.update(csrf(request)) return render_to_response('news/add.html',c)方法二:
return render_to_response('news/add.html', {}, context_instance=RequestContext(request)) 注意,对于方法二,一定要注意是在显示表单之前那个方法上面加上context_instance=RequestContext(request),就像下面这样: 对于登录窗口,显示登录窗口对应的views方法为:def index(request):
return render_to_response('account/login.html', {}, context_instance=RequestContext(request))注意是在这个方法的return函数里面加上context_instance=RequestContext(request),而不是在响应提交按钮的那个views方法里面加。这一点尤其需要注意。
如果是ajax提交的话,要在整个项目的首页,加上这一段代码: //新加处理ajax提交表单的处理方式 jQuery(document).ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } function sameOrigin(url) { // url could be relative or scheme relative or absolute var host = document.location.host; // host + port var protocol = document.location.protocol; var sr_origin = '//' + host; var origin = protocol + sr_origin; // Allow absolute or scheme relative URLs to same origin return (url == origin || url.slice(0, origin.length + 1) == origin + '/') || (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || // or any other URL that isn't scheme relative or absolute i.e relative. !(/^(\/\/|http:|https:).*/.test(url)); } function safeMethod(method) { return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); }
if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken')); } });views.py里面正常书写就行了,不需要做特殊处理:
return render_to_response('news/add.html')关于csrf的处理一定要参照官方网站:
>>21.关于后台往前台推送的技术,一般都是用comet实现。
>>22.linux中的pwd命令?
pwd 命令代表“print working directory”(打印工作目录)。当你键入 pwd 时,你是在请你的 Linux 系统显示你的当前位置。 例如:[root@teacher apache]# pwd
/tmp/apache
表明你当前正处在/tmp/apache目录中。
>>23.django中的views.py函数里面也可以断点调试:
Debug As -> Python Run>>24.多用render_to_response,少用HttpResponseRedirect
#return HttpResponseRedirect("account/login.html") return render_to_response("account/login.html", {}, context_instance=RequestContext(request))这里有一个很重要的问题
如果要在页面使用user,那么页面必须要有request对象(为什么?因为user就是从request里面取的) 所以在渲染页面的时候。如果要使用这个验证,就必须要把request对象也渲染进去 我之前渲染页面就是用return render_to_response('index.html') 这样的话,只是单纯渲染页面。是不会把request传进去的。必须显式的指定 加入context_instanse=RequestContext(request)才有办法在页面使用 但是每次render都这样写是不是很烦? django1.3新增了一个shortcut render 其实就是一默认使用RequestContext的render_to_response 这个方法除了有一个必须的第一个参数 request外,和render_to_response都一样使用传统的页面重定向,是默认会带入request的,如使用HttpResponseRedirect
正确的代码:
return render_to_response('index.html',context_instanse=RequestContext(request))或者用django1.3新增的render
return render(request,'index.html')
>>25.django的模板系统中也有注释,注释采用{# #}表示
{# This is a comment #} 注释的内容不会在模板渲染时输出。>>26.时间字段
regdate=models.DateTimeField("注册时间",auto_now_add=True) lasttime=models.DateTimeField("上次登录时间",auto_now=True)>>27.编码的时候把一些代码注释掉可能并没有起到效果,所以最好选择把它删掉。
>>28.修改django项目名称
轻易不要修改django项目名称,一般情况下第一次会修改成功,再修改的时候就会报错,这个时候只要刷新一下项目,然后就又可以修改一次。不建议修改django项目名称还有一点就是在settings.py文件中有几处需要修改,这一点跟java项目不同。所以不得万不得已不要修改django项目名称。文件系统不同步问题resource is out of sync with the file system的解决办法
查阅资料后发现这是文件系统不同步的问题,是因为在eclipse之外对工程中的resource进行修改引起的;但是,有时没有在eclipse之外进行修改,也会报类似的错误。
解决办法:需要手动刷新一下资源管理器。 刷新下 就行了。>>29.要想在模板中获得session中的值,必须渲染模板,也就是在返回函数中加上下面一个参数:
context_instance=RequestContext(request)然后像下面这样取值:
{% if user.is_authenticated %} Session中用户名:{ { request.user.username }}{% endif %}
>>30.使用print测试python程序
整个django项目中,在views.py文件里面写print "hello"这样的语句是不会运行的,所以不能在cosole里输出要查看的变量的值,今天突然意识到一个调试的好方法,而且不用每次都重启服务器,在任何一个views.py里面都可以运行。
那就是加上这几行代码:
if __name__ == "__main__": username = "username" password = "password" login_ldap(username, password) print "success"
这样直接在该views.py文件里面,点右键->Run As -> Python Run,这样就直接可以执行print语句了。
也可进行断点调试,设置断点,点右键->Debug As -> Python Run,同样可以执行print语句
>>31.在js中判断某个对象是否已经定义:
判断当前frame是否子frame还是top frame:
>>32.在dwz中target="ajaxToDo"中有callback属性以及字段排序功能:
转载地址:http://ykxci.baihongyu.com/