总结python+Django+mysql项目遇到的一些问题

来源:互联网 发布:mac淘宝不能对话 编辑:程序博客网 时间:2024/05/23 12:04

    最近由于课程作业项目的要求,必须使用Python+Django+mysql写一个酒店预定的系统,由于本人之前没有任何web开发的基础,还以为本人大学期间都不用跟web打交道了,最后还是逃不掉,so没有任何html,js,css等基础,所以只能最后做出一个界面比较戳的东东交了。用了一周多点的时间,所有东西都是现学现卖,不过功能还是实现了,最后还是有一点点成就感滴。现在总结一下,自己遇到的问题,以便以后可以翻看翻看,或者可以给遇到相同问题的朋友一些帮助。


   1.如果需要结合mysql的话,最好下载Python2.7好了,目前python-mysql连接驱动最高支持到2.7而已,我一开始时候下了python3.3后,发现不行,后来还得删掉重新装2.7.具体安装过程上篇博客有写到。如果不怕占用空间大的话,建议安装MySql Workbench,操作起来方便,如果需要导出数据库类图什么的也很方便。


   2.Django里面的view.py起的功能实质上是相当于MVC模式里面的controller的作用,而非MVC的view的功能。我的理解是,它工作的原理是,首先根据URL在整个项目下的urls.py寻找到项目中的App对应的urls.py,然后在urlpattern中对应的url配对view中的方法,然后该方法中实现了逻辑处理还有调用相应的html来显示。


   3.关于使用form,如果你需要在return render_to_response()中的html页面中显示form的话,必须要首先在html代码中<form></form>结构体中加入{%csrf_token%},还有在render_to_response()中加入context_instance = RequestContext(request)作为其中一个参数,否则总会报错的。


  4.关于日期的一些操作,一开始的时候需要用到遍历特定区间内的日期时候,不知道怎么搞,不过最后终于被我找到了。

     date = checkindate
        while date < checkoutdate:
            date += datetime.timedelta(days=1)    

            .........

       然后checkin_date__lte = date,   表示的意思是:checkin_date<=date
               checkout_date__gt = date,表示的意思是:checkoudate>date

       datetime.datetime.now().strftime("%Y-%m-%d")    #strftime()函数是控制日期的格式输出的,如果只需要月和日就是,.strftime(%m-%d)即可。


   5.如果url中绑定的方法是类中的一个方法的话,那么写成,eg:url(r'^$', views.SearchHotelPage().searchHotel)

      searchHotel是SearchHotelPage类中的一个方法。


   6.当绑定的那个html中有多个Submit的时候,可以用如下方法来对应去相应的操作:

     <input type="submit" name="Add" value="Add" class="button"></input>
     <input type="submit" name="Del" value="Del" class="button"></input>

     然后在view.py中:

     if request.POST.has_key("Add"):  ......     #对应上面的name的值

     if request.POST.has_key("Del"):   .....


   7.使用python语言对MySQL的操作:

      Reservation.objects.get()  返回至多一个结果

      Reservation.objects.filter()   返回一个列表


   8.关于view.py中的方法怎么和它要显示的html页面进行交互,比如:

      return render_to_response("BookRoom/bookroom.html",
                                  {'hotel_name':hotelname,    'hotel_info':hotelinfo},
                                  context_instance = RequestContext(request,hotel_id))

       用字典对应起来的关系:'hotel_name'是html中的{{hotel_name}}对应,hotelname是该方法的变量,到时候显示时候就会把hotelname映射到html中的{{hotel_name}}


    9.在forms.py中定义了一个这样的表单

    class SearchHotelForm(forms.Form):
    cityname = forms.CharField(label='city/Town',max_length=30)
    checkindate = forms.DateField(label='checkin')
    checkoutdate = forms.DateField(label='checkout')

         view.py中获取用户输入的数据:

                form = SearchHotelForm(request.POST)

if form.is_valid():

tarname = form.cleaned_data['cityname']
                checkindate = form.cleaned_data['checkindate']
                checkoutdate = form.cleaned_data['checkoutdate']

                这样tarname,  checkindate , checkoutdate便获取了用户输入的.

          html中显示是:

                <form action="." method="POST">
{%csrf_token%}
<table>
{{form.as_table}}
</table>
</form>

          表单预先显示给用户可以这样:

                   form = SearchHotelForm({'cityname':city_name,'checkindate':checkindate,'checkoutdate':checkoutdate})


  

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝上买的东西发错了怎么办 淘宝上买的东西发多了怎么办 淘宝上买的东西出现问题怎么办 淘宝买东西未收到货显示签收怎么办 网上一张车票两人同时付款了怎么办 微信付款时显示银行卡被锁定怎么办 微信忘记支付密码怎么办没有银行卡 支付宝赏金扫码支付不行怎么办 网购收货时发现货物已破损怎么办 货物丢失了不承认调查出来了怎么办 小米商城已签收未收到了怎么办 网购的一只荷兰猪现在怎么办 中通快递的掌中通好评怎么办 唯品会快递被签收却没收到货怎么办 拼多多快递签收了但没收到货怎么办 顺丰代收签收成功要强制退款怎么办 淘宝付了钱如果商家没货了怎么办 别人拿走我的货不给钱怎么办 快递出途中损坏签单后才发现怎么办 顾客支付宝少付了钱人走了怎么办 顾客通过收钱码付的钱少了怎么办 寄顺丰快递收件人号码填错了怎么办 京东退货售后说是有划痕怎么办 手机上快递员软件签收错了怎么办 苹果手机进网许可证丢了怎么办 作废的普票发票联丢失怎么办 想退换货但是发票丢了怎么办 快递没有当面验货造成的丢件怎么办 退货卖家收货验货说有问题怎么办 没当着快递人员面验货少货怎么办 微信绑定的银行了被快捷支付怎么办 银行支付到微信支付里的钱怎么办 微信绑定银行忘支付密码忘了怎么办 微信桂林银行不可以支付怎么办 微信忘记支付密码和银行卡号怎么办 京东商城迟迟不通过退货审核怎么办 网上购物想退款商家要我拒收怎么办 运输公司对车主不买保险怎么办 苹果平板限制访问密码忘了怎么办 安卓手机忘了解锁密码怎么办 海之蓝扫码显示域名不对这是怎么办