使用pycharm开发web——django2.1.5(二)创建一个app并做一些配置
这里我学习的呢是刘江老师的站,主要原因在于他这个版本新,还比较细节
网址先留一手,约等于在引用http://www.liujiangblog.com/
开始正题:
1.在pycharm界面终端命令行里面
(点这个)
2.输入命令
python manage.py startapp polls
这里的polls是刘江老师教程中创建的投票系统的名字,你可以起任何名字
3.观察你左边的目录你会发现多了一个新的文件夹,里面还有好多py文件
4.编写视图
这里的视图对应文件views.py,编辑,代码如下:
polls/views.py
from django.http import HttpResponse def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这里你懂的引号里面那些话随便说
配置该app的url
polls/urls.py
from django.urls import path from . import views urlpatterns = [
path('', views.index, name='index'),
]
这里请记住,urlpatterns 是固定的名字,别写错了否则又是一阵找
然后配置项目url
pysite/urls.py
这里的pysite是我的项目所在处,请根据自己的情况修改
from django.contrib import admin
from django.urls import include, path urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
5.启动查看127.0.0.1:8000/polls
这时候就可以看见了。
django可以连接各种数据库,默认的好像是叫作sqllite,神奇的在于,我先学了点python后学了点java,直到大概了解了一些java全栈知识的时候,回过头才把这个地方看懂,这里将数据库连接配置写入setting.py之中,与maven的jar包干的事情差不多那么,最后预计做的深一点就是增删改查了,只是在配置mysql和django相连的时候有个坑,(刚爬出来)
首先你要在setting中修改这些
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# } #pysite/setting.py #Database
#https://doc.djangoproject.com/en/1.11/ref/settings/#database import pymysql #这里的两行很重要
pymysql.install_as_MySQLdb() DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'myexp',
'HOST':'localhost',
'USER':'root',
'PASSWORD':'*******',
'PORT':'',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",}
} }
注释的部分是默认的,因为我这里要连接本地的mysql
这里几个属性,驱动,数据库名,数据库主机地址,数据库用户名,密码,端口(mysql默认3306),最后那个过几天研究研究->->
密码我藏了一下下,仔细想想就是个人隐私。我那个数据库叫myexp。
正常连接完之后,可以试着启动django,本来是直接迁移,我阴差阳错的发现两个会报同样的错,感觉这样会安全一点
第一个大坑:由于django对于5.0还是3.0以上版本好像有个什么支持的问题,点完之后疯狂提示
这个:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11
这就很蛇皮,结果问题是因为在base.py
这个文件中有一句: (我注释的那个)
把这个注释了就行了,,然后进入坑道第二层
这时候你运行的话会出现:
'str' object has no attribute 'decode'
这个错误。
根据报错找到相应文件D:\pysite\mysite\venv\Lib\site-packages\django\db\backends\mysql\operations.py
(上面是我的项目中的)
146行有句话,看完之后感觉很气,一直说字符串没有decode方法,问题则出在。。。应该用encode而不是decode,解决方法也是将它直接改了
def last_executed_query(self, cursor, sql, params):
# With MySQLdb, cursor objects have an (undocumented) "_executed"
# attribute where the exact query sent to the database is saved.
# See MySQLdb/cursors.py in the source distribution.
query = getattr(cursor, '_executed', None)
if query is not None:
query = query.encode(errors='replace')
return query
嗯,这样之后就ok的
然后就是回到终端进行你的数据库迁移!!!
python manage.py migrate
好的,进入你的mysql
发现多了好几个新的表,那么,你的任务基本完成,数据库算是连上了嘿。
最新文章
- 设计模式(七)适配器模式(Adapter Pattern)
- SqlDevlepor注册表监听器设置
- javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
- 增加字段关联插件 For PHPCMS V9 免费版
- 0603 python 基础02
- 基于visual Studio2013解决C语言竞赛题之0802图书信息查询
- [LeetCode] Find Largest Value in Each Tree Row 找树每行最大的结点值
- Thread.yield( )通俗理解
- Javascript高级编程学习笔记(16)—— 引用类型(5) Function类型
- mysql语句-DDL语句
- Python 读取WAV文件并绘制波形图
- ps 和 top 的cpu的区别
- e786. 创建JSpinner组件
- 【android】Android ADB 端口占用问题解决方案
- 花瓶使用笔记 (抓数据时,记得添加host,不然抓不了包的)
- ExtJS TreeGrid的使用方法
- POJ1039几何
- 最小生成树问题:Kruskal算法 AND Prim算法
- likely,unlikely宏与GCC内建函数__builtin_expect()
- 天上掉馅饼 期望DP