django 总结

创建django项目的方法:


https://www.cnblogs.com/xuancaolinxia/p/5677503.html
mysql 安装配置
https://www.2cto.com/database/201612/577717.html


mysql -uroot -p 使用root 进入数据库
show database; 查看当前的库
create database test2 charset=utf8; 创建库并设置编码格式
use test2 使用摸个数据库
show tables 查看表


desc xxx 查看表结构
1。pip install --upgrade pip
sudo apt-get install python-virtualenv
sudo easy_install virtualenvwrapper
mkdir $HOME/.virtualenvs
2.在~/.bashrc中添加行:
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
 运行
 source ~/.bashr
3.创建python虚拟环境
mkvirtualenv [虚拟环境名称]
workon [虚拟环境名称]
4.退出虚拟环境 离开 deactivate
5.删除(慎用) 
rmvirtualenv [虚拟环境名称]


生成迁移
python manage.py makemigrations
将models.py 中的类生成对应的sql文件 存放在migrations目录中
执行迁移
python manage.py migrate






对于django框架的学习:
在这个目录里包含了4个子目录
test1 是第一次创建的一项目 里面什么都没有
test2 是针对models的练习
test3 是针对views的练习
test4 是针对templates的练习


test2中:目录结构
├── booktest
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0001_initial.pyc
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ └── booktest
│ │     └── index.html
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── manage.py
└── test2
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc
涉及的内容以及自己认为的重点:
settings.py 文件
INSTALLED_APPS 中添加自己的app名字 'booktest'
TEMPLATES 中 添加模板的路径:'DIRS': [os.path.join(BASE_DIR,'templates')],
由于使用的是mysql数据库:
DATABASES = {                                
    'default': {                             
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test2',                     
        'USER': 'root',                      
        'PASSWORD':'xxxxxx',            
        'HOST':'127.0.0.1',                  
        'PORT':'3306',                       
    }                                        
}


在settings.py 的同级目录下 urls.py 的内容    
from django.conf.urls import include, url     
from django.contrib import admin                                                          
urlpatterns = [                               
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('booktest.urls')),      
]    


在booktest目录下的urls.py 中   
from django.conf.urls import url 
import views                                                  
urlpatterns = [                  
    url(r'^$',views.index),                                      
]  
通过这两个文件让用来发来的请求去寻找views.py 以及templates 中对应返回的html  


在models.py 文件中
class BookInfoManager(models.Manager)这个类继承django框架自带的管理类
其中的create方法 是自实现的创建数据的方法
get_queryset方法 是自己调用父类的获取数据方法 没有
在 BookInfo 文件中
class Meta:            
    db_table='bookinfo' 修改BookInfo 在数据库中的名字
HeroInfo中
book=models.ForeignKey(BookInfo) 一对多的外键关联
数据查询的方法 以下提供一些参考 http://www.ywnds.com/?p=11956
需要注意的是:
自定的模型类 不能重写__init__ 函数
单独定义创建的方法    
或者在自定义管理器中增加创建数据的方法   
测试数据时 可以使用
python manage.py shell


>>> from datetime import datetime
>>> b.bpub_date=datetime(year=1990,month=1,day=11)
>>> b.save()
>>> BookInfo.objects.all()
<QuerySet [<BookInfo: BookInfo object (1)>]>
>>> quit()    


test3 是views 视图的学习部分  目录结构:
├── booktest
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ ├── 404.html
│ │ └── booktest
│ │     ├── getTest1.html
│ │     ├── getTest2.html
│ │     ├── getTest3.html
│ │     ├── postTest1.html
│ │     ├── postTest2.html
│ │     ├── session1.html
│ │     └── session2.html
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── db.sqlite3
├── manage.py
└── test3
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc      


settings.py 的设置跟test2中的相似
urls.py 
from django.conf.urls import include, url       
from django.contrib import admin                                                             
urlpatterns = [                                 
    url(r'^admin/', include(admin.site.urls)),  
    url(r'^booktest/',include('booktest.urls')),

在booktest目录下的urls.py 文件
from django.conf.urls import url                      
import views                                                                                             
urlpatterns=[                                         
    url(r'^$',views.index),                           
    url(r'^(\d+)$',views.detail), #()的表示在提交时的参数   
    #get方法                 
    url(r'^getTest1/$',views.getTest1),               
    url(r'^getTest2/$',views.getTest2),               
    url(r'^getTest3/$',views.getTest3), 
    #post方法                                                                   
    url(r'^postTest1/$',views.postTest1),             
    url(r'^postTest2/$',views.postTest2), 
    #cookies                                                                 
    url(r'^cookieTest/$',views.ccokieTest),
    #url重定向的使用           
    url(r'^redTest1/$',views.redTest1),               
    url(r'^redTest2/$',views.redTest2), 
    #session的设定                                                                                                                      
    url(r'^session1/$', views.session1),              
    url(r'^session2/$', views.session2),              
    url(r'^session2_handle/$', views.session2_handle),
    url(r'^session3/$', views.session3),                                                                   
]                                                     
 主要说明一下 views.py 中:
 url(r'^(\d+)$',views.detail) 正则中包含() 表示去出其中的值                                                              
def index(request):                                           
ti = loader.get-template('xxx/index.html')                  
content = RerquestContext(request,{'h1','hello'}            
return HttpResopnse(t1.render(context))                                                                                 
简写方案:                                                    
def index(request):                                         
return render(request,'xxx/index.html', {'h1','hello'}    


 状态保持:
  http协议是无状态  不记录跟网站交互的信息      
  
  一种方式是cookie 记录历史
  
  第二种方式:session
  
  在setting.py 中默认启用的
  'django.contrib.sessions'
  对应的中间键:
  'django.contrib.sessions.middleware.SessionMiddleware',
  
  request.session.set_expiry(value)
你可以传递四种不同的值给它:
* 如果value是个整数,session会在些秒数后失效。
* 如果value是个datatime或timedelta,session就会在这个时间后失效。
* 如果value是0,用户关闭浏览器session就会失效。
* 如果value是None,session会依赖全局session失效策略
      
test4 中 模板的使用 主要设计 dtl 参考https://blog.csdn.net/qq_14898613/article/details/61196500 
├── booktest
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │├── __init__.py
│ │└── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── templates
│ │ └── booktest
│ │     ├── base_goods.html
│ │     ├── base.html
│ │     ├── base_user.html
│ │     ├── csrf1.html
│ │     ├── htmlTest.html
│ │     ├── index2.html
│ │     ├── index.html
│ │     ├── show.html
│ │     ├── template.html
│ │     ├── user1.html
│ │     ├── user2.html
│ │     └── verifyTest1.html
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── manage.py
└── test4
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    └── wsgi.pyc


settings.py 文件中:
MIDDLEWARE_CLASSES 中 跨域请求攻击保护 其他设置 跟前两个相同
'django.middleware.csrf.CsrfViewMiddleware'


urls.py
from django.conf.urls import include, url                   
from django.contrib import admin                                                                                   
urlpatterns = [                                             
    url(r'^admin/', include(admin.site.urls)),    
    #namespace 决定是哪个项目的          
    url('^', include('booktest.urls',namespace='booktest')),
]  


在booktest4目录下的urls.py    
from django.conf.urls import url
import views
urlpatterns=[
    url(r'^$',views.index,name='index'),
    #name 主要是用来继承使用
    url(r'^(\d+)/(\d+)$',views.show,name='show'),
    url(r'^index2$', views.index2, name='index2'),
    url(r'^user1', views.user1, name='user1'),
    url(r'^user2', views.user2, name='user2'),
    url(r'^htmlTest$',views.htmlTest),
    url(r'^csrf1$',views.csrf1),
    url(r'^csrf2$',views.csrf2),
    url(r'^verifyCode$',views.verifyCode),
    url(r'^verifyTest1', views.verifyTest1),
    url(r'^verifyTest2', views.verifyTest2),


]                                                     
        
主要的语法:
{%extends 'booktest/base.html' %} 继承哪个html
html 中填坑的内容
{% block user_content %}
{%endblock%}    
{% csrf_token %}  防止跨域攻击的固定写法 
index.html 中 通过name 去寻找对应的url
 <a href={%url 'booktest:show' '123' %}>显示</a> 
views.py 中
verifyCode  函数 是用来生成一图片 包含验证码     
其中 : 内存读写
import cStringIO         
buf=cStringIO.StringIO() 
image.save(buf,'png')  
返回
HttpResponse(buf.getvalue(),'image/png')     
    content:表示返回的内容,字符串类型
    charset:表示response采用的编码字符集,字符串类型
    status_code:响应的HTTP响应状态码
    content-type:指定输出的MIME类型
                     
                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值