美文网首页python爬虫 大数据 aidjangoPython 运维
阅读虫师django开发发布会系统以及django开发Web接口

阅读虫师django开发发布会系统以及django开发Web接口

作者: 博行天下 | 来源:发表于2017-11-24 20:08 被阅读2453次
    最近阅读了虫师的书籍,关于虫师分析django Web开发以及django 开发Web接口,通过阅读虫师的书籍,学到了很多东西,在这里分享一下,和简友一起学习和讨论

    1、创建项目django-admin startproject duodian
    2、创建应用python manage.py startapp myduodian,将myduodian添加到应用中
    3、运行项目 python manage.py runserver,可以通过连接http://127.0.0.1:8000访问就可以It Worked
    4、在urls.py中配置url(r'^index/',views.index)
    需要导入from myduodian import views
    5、在views.py中定义一个方法

    from django.http import HttpReponse
    def index(request):
    return HttpReponse("你好 我的世界")
    

    运行 python manage.py runserver,在浏览器中输入http://127.0.0.1:8000/index即可显示,就可以在页面看到你好 我的世界

    6、在myduodian文件夹下创建templates文件夹,在文件夹templates创建模板,index.html
    7、修改views.py里面index函数

    from django.http import HttpReponse
    def index(request):
    return render(request,'index.html')
    

    再运行即可显示index.html里面的内容。

    项目运行在现在,我们简单的看下项目目录: duodian.png

    8、(1) form POST提交会出现CSRF失败,这时我们需要在form表单里面添加{% csrf_token %},刷新表单即可。
    另一种方法就是在setting.py种去掉csrf中间件,也能继续访问,但是这种做法不推荐。
    (2) 表单提交时属性为action=/login_action/,在浏览器中访问链接就是http://127.0.0.1:8000/login_action/

    9、render(request,''index.html'',{'error':'失败了'})
    在模板html文件中使用{{ error }}

    10、重定向

    from django.http import HttpResponse,HttpRespinseRedirect
    return HttpRespinseRedirect('/event_manage')
    

    11、Cookie、Session


    12、python manage.py migrate进行数据迁移
    同时也会生成auth_user表,该表中存放的用户信息可以用来登录Django自带的Admin管理后台

    13、登录Admin后台python manage.py createsuperuser,自设账号和密码,
    Admin管理后台登录地址:http://127.0.0.1:8000/admin/

    14、如果设置某个函数只能登录才能访问

    @login_required
    def event_manage(request):
    

    15、在models.py中创建模型类,每一个模型类就对应数据库中的每一个表

    16、创建好模型类以后,python manage.py makemigrations myduodian执行数据库迁移,迁移成功就会在数据库中创建表

    补充:项目创建是在虚拟环境外面创建的,但是python命令操作都是在虚拟环境下


    17、在13中Admin后台管理用户/用户组可以,创建的发布会和嘉宾表也可以通过Admin后台管理,需要在admin.py注册管理的表

    from myduodian.models import Event,Guest
    admin.site.register(Event)
    admin.site.register(Guest)
    

    修改setting.pyzh-hans后台变成汉字

    18、Admin后台管理界面简单设置

    class EventAdmin(admin.ModelAdmin):
    list_display=['id','name']
    
    class GuestAdmin(ModelAdmin):
    list_display = ['realname','phone']
    search_fields = ['phone']
    list_filter = ['name']
    
    admin.site.register(Event,EventAdmin)
    admin.site.register(Guest,GuestAdmin)
    可以理解成用EventAdmin来注册Event模块
    

    19、python manage.py shell执行命令操作Django模型
    20、 查询数据:Event.objects.all()数组模型

    Event.png

    保存数据方式1:

    save.png
    报的错是时间区不对
    在setting.py文件中修改USE_TZ=False即可
    保存数据方式2:
    Event.objects.create(id=3,name="你好")

    21、获取数据方式

    Event.objects.get(name = "nihao").limit
    返回的是name等于你好的模型对象,django的get去取得关联表的数据的话,而关键表的数据如果多于2条的话也会报错
    
    django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。 
    比如我数据库里有一条记录,记录的name的值是老王python的话,我用 
    student = Student.objects.filter(name='老王python')
    student = Student.objects.filter(name__contains='老王python')
    student.delete()删除数据
    更新字段1:
    student.name = "小明"
    student.save()注意要保存哦
    更新字段2:
    Guest.objects.select_for_update().filter(phone="17078075655").update(realname="andy")
    
    

    22、SQLite管理工具
    SQLite Manager 火狐浏览器插件,下载装插件
    SQLiteStudio 下载安装就可以,sqlitestudio.pl下载

    23、下载mysql

    配置mysql
    安装pymysql
    python中库mysql-python 连接mysql
    connect()建立数据库链接
    cursor()获取数据库操作游标
    execute()执行sql语句
    commit()提交事务
    close()关闭数据库链接
    
    from pymysql import cursors,connect
    conn = connect(
    host=''127.0.0.1,
    user='root',
    password='',
    charset='utf-8',
    cursorclass=cursors.DictCursor)
     with conn.cursor() as cursor:
    sql = "insert into sign_quest(realname,phone) values('name',17078075655)"
    cursor.execute(sql)
    # 提交事务
    conn.commit()
    # 关闭
    finnally conn.close()
    
    查询信息
    sql = "select phone from sign_quest where phone =%s"
    cursor.execute(sql,("17078075655",))
    

    在django中配置mysql
    在setting.py修改databases就好

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'HOST':'127.0.0.1',
            'PORT':'3306',
            'NAME': 'test',
            'USER':'root',
            'PASSWORD':'',
        }
    }
    

    24、从sqlite3数据库切换到mysql中,需要做到数据库同步,保证数据的完整性,执行python manage.py migrate

    python2 不支持用pymysql 需要在myduodian、init.py中输入
    import pymysql
    pymysql.install_as_MySQLdb()
    因为换了数据库后台管理账号也需要重新设置python manage.py createsuperuser
    mysql可视化管理工具Navicat
    SQLyog


    25、django模板

    Django-boostrap3 集成在Django中的,下载安装使用,要写在settIng.py应用中bootstrap3,在INSTALLED_APPS=[
    bootstrap3
    ]
    pip install Django-bootstrap3
    
    加载用用、css、js文件
    {%  load bootstrap3  %}
    {  bootstrap3_css   }
    {   bootstrap3_javascript   }
    

    26、分页器

    page = Paginator([],2)
    page.count 查看共多少条数据
    page.page_range查看共分多少页
    
    page1 = page.page(1)查看第一页数据
    page1.object_list当前页的对象
    
    page2 = page.page(2)获取第二页数据
    page2.start_index本页第一条数据
    page2.end_index本页最后一条
    page2.has_previous() 是否有上一页
    page2.has_next是否有下一页
    
    page2.previous_page_number()上一页是第几页
    page2.next_page_number()下一页是第几页
    page2.has_other_pages()是否有其他页
    
    URL 链接:'r(^sign_index/(?p<eid>[0-9]+)/ $'参数
    
    from django.shortcuts import render,get_object_or_404
    event = get_object_or_404(Event,id=eid)
    

    27、连接增加参数

    action="/sign_index_action/{{ event.id }}/"参数
    Guest.objects.filter(phone=phone,event_id=eid).update(sign='1')
    
    

    28、退出登录:

    def logout(request):
    auth.logout(request)  # 退出登录
    return HttpResponsedirect('/index/')
    

    实现登录功能

    def login(request):
    auth.login(request)  # 退出登录
    return HttpResponsedirect('/index/')
    

    29、开发系统web接口

    url配置:(r'^api/',include(''sign.urls,namepace="sign"))
    JsonResponse({'status':200,data:[]})
    JsonResponse({'status':200,'messge':"error"})
    

    30、下载好pycharm压缩文件在bin下执行下列代码即可

    开启pycharm用sh ./pycharm.sh
    激活用http://idea.imsxm.com
    

    相关文章

      网友评论

        本文标题:阅读虫师django开发发布会系统以及django开发Web接口

        本文链接:https://www.haomeiwen.com/subject/jfsgvxtx.html