Archive for web-2

  使用步骤: 1、在settings文件中的INSTALLED_APPS中加入'django.contrib,comments',。 2、执行命令,manage.py syncdb,创建数据表。 3、urls.py中 (r'^comments/',include('django.contrib.comments.urls')),。 4、编辑templates文档。  

{% load comments %}
{% get_comment_list for articles.Articles a.id as comment_list %}
{% for comment in comment_list %}

评论人:{{comment.user.username}}{{comment.user.email}}|评论时间:{{comment.submit_date|date:"Y-m-d H:i"}} |ip地址:{{comment.ip_address}}

{{comment.comment}}
{% endfor %} {% get_comment_form for articles.Articles a.id as form %}
{% csrf_token %}{{form.object_pk}}{{form.content_type}}{{form.timestamp}}{{form.security_hash}}

{% load comments %} 是所有要用到comments组件的模板都需要加进入标签。 a.id是上面文章的id,没有规范写。 <input type="hidden" name="next" value="/articles/36/" />实现评论成功后的跳转,功能还没实现。 还有一个功能没实现,就是非登陆用户的评论限制。 具体参考官网“the built-in comment models”
<table> <tr> <th>作者:{{a.user.username}}</th><th>时间:{{a.datetime|date:'Y-m-d H:i'}}</th><th>IP:{{a.ip}}</th></tr> <tr><td><b>{{a.title}}</b></td></tr> <tr><td>{{a.content}}</td></tr> </table> {% load comments %} {% get_comment_list for articles.Articles a.id as comment_list %} {% for comment in comment_list %} <div> <p>评论人:<b>{{comment.user.username}}{{comment.user.email}}</b>|评论时间:{{comment.submit_date|date:"Y-m-d H:i"}}|ip地址:{{comment.ip_address}}</p> {{comment.comment}} </div> {% endfor %} {% get_comment_form for articles.Articles a.id as form %} <form action={% comment_form_target %} method="post"> {% csrf_token %}{{form.object_pk}}{{form.content_type}}{{form.timestamp}}{{form.security_hash}} <p><label for="id_comment">评论:</label></p> <p><textarea name="comment"></textarea></p> <input type="hidden" name="next" value="/articles/36/" /> <p><input name="post" value="发表" type="submit" /></p> </form>

Continue

这两个的安装都是直接命令安装, apt-get install libapache2-mod-wsgi 查看mod_wsgi是否安装成功,找文件/usr/lib/apache2/modules/mod_wsgi.so 编辑/etc/apache2/httpd.conf,加入: #  LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so   WSGIScriptAlias / "/data/web/test/mysite/apache/django.wsgi"     <Directory "/data/web/mysite">   Order Deny,Allow   Allow from all   </Directory> #那句不用写,加入以后会提示“已经载入mod_wsgi” [warn] module wsgi_module is already loaded, skipping 以后还要再配置一次,现在做个测试。主要参照官网。 Alias /robots.txt /usr/local/wsgi/static/robots.txt Alias /favicon.ico /usr/local/wsgi/static/favicon.ico AliasMatch ^/([^/]*\.css) /usr/local/wsgi/static/styles/$1 Alias /media/ /usr/local/wsgi/media/ Alias /static/ /usr/local/wsgi/static/ <Directory /usr/local/wsgi/static> Order deny,allow Allow from all </Directory> <Directory /usr/local/wsgi/media> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /usr/local/wsgi/scripts/django.wsgi <Directory /usr/local/wsgi/scripts> Order allow,deny Allow from all </Directory>   /data/web/test/mysite/apache/django.wsgi

# -*- coding: utf-8 -*-
import os
import sys

apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
apache的日志文件存放在:/var/log/apache2/目录下。

Continue

没有认真读 apache 官方文档,先自己研究了一下。windows下修改httpd.conf可以用了,做笔记。 添加代码:

LoadModule python_module modules/mod_python.so <Location "/"> SetHandler python-program PythonPath "sys.path+['D:/django']" PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE plant.settings PythonInterpreter plant PythonDebug On </Location>

<Location "/media/"> SetHandler none </Location>

修改代码: DocumentRoot "D:/django/plant" 静态文件路径。 不知道配置是否有问题 ,先做一个小搭建个环境做测试。 看官方文档后再修改。

Continue

利用Django表单实现 用户注册,检测数据库中是否有该用户。方法 查到的比较好的一种方法 get(**kwargs) 以下文描述的 "字段查询" 格式返回匹配查找参数的对象.如果没有找到符合给定参数的对象,会引发一个模块级的DoesNotExist 异常. 如果找到不止一个对象,引发AssertionError 异常.

from django.core.exceptions import ObjectDoesNotExist
try:
#判断用户名是否被注册
    User.objects.get(username=username)
except ObjectDoesNotExist:
    return username
raise forms.ValidationError('改用户名已存在')

Continue

CSRF verification failed. Request aborted.

Help Reason given for failure: CSRF token missing or incorrect. 解决方案: 在Settings里的MIDDLEWARE_CLASSES增加配置: 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.csrf.CsrfResponseMiddleware',

Continue

在我们的js中,最大的一般还是js库,毕竟具体的功能实现只需要写一点点代码而已。但是js库里那么多用到的没用到的东西,还是有点份量的。我们 又想用,又嫌它大。怎么办呢?拆成很多个吧,多一个js还多一个并发连接呢…… 幸好,google挺够意思,号称“永久提供”常见js库,google的服务器和线路品质那自然是不在话下的。即提高了下载速度又减少了自己服务器的并 发连接数。不用就是傻子了。 用起来也很简单,直接在网页里引用google服务器上的相关js文件就可以了。不过,如果引用多个js,就要插入多段的script。现在像我这样代码 能少一个字算一个字的人不少。google也提供了相应的办法,那就是google load。我们只需要在页面里引用一个js文件,就可以根据需要实时加载用到的js库了。首先在页头部分加入以下这行代码:

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
这就足够了,google提供了以下这些js框架/库的API: jQuery jQuery UI Prototype script.aculo.us MooTools Dojo 而且google的API中包括这些js框架/库的所有正式发布版。你可以根据自己的需要来选择。以jQuery为例,我们可以这样使用:
<script type="text/javascript">
  google.load("jquery", "1.3.2");//加载jQuery 1.3.2
 </script>
这样我们就从google的最近的CDN镜像上加载了jQuery 1.3.2版的js库,接下来就可以正常写js代码了。不过,即使是google的CDN镜像,下载也毕竟是需要时间的,万一代码库还没有下载完而浏览器 已经解释到了下面的代码了怎么办?我们可以设定在js库加载完以后才开始执行js:
<script type="text/javascript">
    google.load("jquery", "1.3.2"); //加载jQuery 1.3.2
    google.setOnLoadCallback(function() {//加载完成后执行代码
        $("body").html("Hello World!");
    });
</script>

Continue

1、MySQL数据库 net start mysql 启动mysql服务 net stop mysql 停止mysql服务 2、Django 启动自带的web服务 python manage.py runserver 创建项目 django‐admin.py startproject mysite 创建应用 python manage.py startapp books 以正确Django配置启用Python交互解释器 python manage.py shell 检查模型的语法和逻辑是否正确  python manage.py validate 生成 CREATE TABLE 语句(books 是app的名称) python manage.py sqlall books 提交SQL语句至数据库的方法  python manage.py syncdb  (syncdb 并 不能将模型的修改或删除同步到数据库)  

Continue