总结python+Django+mysql项目遇到的一些问题
2013-06-03 13:57
756 查看
最近由于课程作业项目的要求,必须使用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})
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})
相关文章推荐
- 最近做项目遇到的一些问题总结
- boost::python 遇到的一些问题总结
- Cocos2d-x项目总结中的一些遇到的问题
- 基于python的一个大规模爬虫遇到的一些问题总结
- 自己总结遇到的mysql的一些问题
- Cocos2d-x项目过程中遇到的一些问题总结
- vue项目遇到的一些问题总结
- 关于Linux安装python画图遇到的一些问题总结
- python django mysql 遇到的问题小结
- 项目开发中经常遇到的一些问题总结
- 9.8 遇到的一些问题 maven部署项目,mysql区分大小写
- django mysql mysql-python安装时遇到的问题
- Centos7.2安装tomcat+Myeclipse(遇到的一些问题与总结)+web项目实战
- struts2总结(自己做项目时遇到的问题加上一些网上的资料)
- Cocos2d-x项目过程中遇到的一些问题总结
- Python MySQL Django一些问题
- Linux下的python 配置项目环境遇到的一些问题
- 【angular5项目积累总结】遇到的一些问题以及解决办法
- Android Studio 之 导入Eclipse项目常见问题及解决方案 在将Eclipse做的Android项目成功导入Android Studio 后,启动生成,遇到一些问题,现总结如下:
- 安装mysql时遇到的一些问题总结 一