zoukankan      html  css  js  c++  java
  • django开发笔记

    创建工程

    django-admin.py startproject proj_name

    修改配置文件

    包括时区和语言

    然后修改urls.py

    (r'^$', index),

    这个对应的url是 http://localhost  其实就是后面什么也没有的情况

    还比如  ||别忘了逗号

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

    这样的对应是http://localhost/hello的url的

    但是我们使用index或者是hello的函数  比如先导入才行

    在urls.py中

    from proj_name.views import index

    然后我们的views.py中一开始比较简单的就是

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello world")

    但是这样呢,是不好去使用模板和自己的变量的  于是出现了下面的

    from django.http import HttpResponse
    import datetime
    
    def current_datetime(request):
        now = datetime.datetime.now()
        html = "<html><body>It is now %s.</body></html>" % now
        return HttpResponse(html)
    from django.template import Template, Context
    from django.http import HttpResponse
    import datetime
    
    def current_datetime(request):
        now = datetime.datetime.now()
        t = Template("<html><body>It is now {{ current_date }}.</body></html>")
        html = t.render(Context({'current_date': now}))
        return HttpResponse(html)

    但是这样还是把html硬编码到了py文件中,

    于是就在配置文件中 加上

    TEMPLATE_DIRS = (
        '/home/django/mysite/templates',
    )
    from django.shortcuts import render_to_response
    import datetime
    
    def current_datetime(request):
        now = datetime.datetime.now()
        return render_to_response('current_datetime.html', {'current_date': now})

    哇~~大变样了~~这样不错吧~

    但是我们的模板是什么样的呢,这就是通过html标签来的。

    http://djangobook.py3k.cn/2.0/chapter04/这有说明。

     ----------------------------------------

    今天学习到了django admin了,但是在使用数据库的时候遇到了几个麻烦

    1. django的默认编码和mysql的不一样 这样在后台写入的数据的时候就会出现错误  

    http://liluo.org/blog/2010/05/django-warning-incorrect-string-value/

    这个应该能解决 但是还没有尝试成功  结果还导致mysql一直提示什么错误

    只能卸载后重新安装~~反正没有什么数据

    2.怎么卸载重新安装呢?

    sudo apt-get autoremove --purge mysql-server-5.0
    sudo apt-get remove mysql-server
    sudo apt-get autoremove mysql-server
    sudo apt-get remove mysql-common (非常重要)
    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
    sudo apt-get install mysql-server

    就是这样~~

    ----------------------------

    现在已经开始使用django adminle ,但是一后台一保存数据就会提示错误,看着像是编码问题。后来搜了搜,

    在创建数据库的时候就应该制定编码

    CREATE DATABASE [database_name] DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

    -------------------------------

    模型中就应该指定字段的数据类型,比如

    from django.db import models
    
    class Reporter(models.Model):
        full_name = models.CharField(max_length=70)
    
        def __unicode__(self):
            return self.full_name
    
    class Article(models.Model):
        pub_date = models.DateField()
        headline = models.CharField(max_length=200)
        content = models.TextField()
        reporter = models.ForeignKey(Reporter)
    
        def __unicode__(self):
            return self.headline

    -----------------------------

    处理csv文件

    有专门的库  但是这个和纯文本的差不多的

    #coding:utf-8
    fileHandle=open("c:\users\root\desktop\2.csv",'r')#打开文件
    fileList=fileHandle.readlines()#每行都读出,放到列表中
    for line in fileList:#对列表的每一行进行判断
        A, B, C = line.split(",")
        print A, B, C

     最终的实现是

    def read_csv (request):
        fileHandle=open("c:\users\root\desktop\1.txt",'r')#打开文件
        fileList=fileHandle.readlines()#每行都读出,放到列表中
        for line in fileList:#对列表的每一行进行判断
            student_name, student_college, student_major, student_class, student_phone_num, student_dorm, student_id, mark = line.decode("GBK").split(",")
            #print student_name, student_college, student_major, student_class, student_phone_num, student_dorm, student_id
            Student_info.objects.create(student_name = student_name, student_college = student_college, student_major = student_major, student_class =(int)(student_class), student_phone_num = student_phone_num, student_dorm = student_dorm, student_id = (str)(student_id), student_status = False)

    经验:数据库的字段能用字符的就用字符 少用IntegerField之类的~~

    ---------------

    数据库一开始最好使用sqlite3,不用设置,占用少,正式使用可以使用mysql等

    ----------------

    django中url匹配到的参数传递到函数中的两个方法

    urlpatterns = patterns('',
        (r'^articles/(d{4})/$', views.year_archive),
        (r'^articles/(d{4})/(d{2})/$', views.month_archive),
    ) 产生函数调用:month_archive(request, '2006', '03')
    urlpatterns = patterns('',
        (r'^articles/(?P<year>d{4})/$', views.year_archive),
        (r'^articles/(?P<year>d{4})/(?P<month>d{2})/$', views.month_archive),
    ) 产生函数调用:month_archive(request, year='2006', month='03')

     -------------

    get和post也是区分大小写的

    def method_test(request):
        if request.method == 'GET':
            return HttpResponse('get')
        elif request.method == 'POST':
            return HttpResponse('post')
        else:
            return HttpResponse('unknown')

    注意那两个大写的post和get

    ----------------

    数据库设计也是一门学问啊  foreignkey和manytomanyfield有空研究看看吧~~

    ----------------------------------

    其实一般显示表单的和处理表单post数据的url可以使用一个  这样比较清晰吧

    def f(request):

        #这个是get请求这个url  也就是显示表单

        if request.method == 'GET':

          return  form

        else:

          处理post来的数据

    ---------------------------

    更新表单的数据

    之前想的是比较麻烦的了。其实在显示这个更新表单之前的时候,查询一下数据库,让form的value = {{ value }}就行了

  • 相关阅读:
    IEEE754二进制浮点数算术标准
    符号三角形代码勘误
    最近点对问题
    【Unsolved】线性时间选择算法的复杂度证明
    解决mosh: Nothing received from server on UDP port 60001 环境: centos7.1
    半导体测试基础
    python进程------multiprocessing包
    python线程------queue、生产者和消费者模式
    pyhon——线程同步条件(event)
    os 模块
  • 原文地址:https://www.cnblogs.com/virusdefender/p/3414985.html
Copyright © 2011-2022 走看看