博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pycharm开发web——django2.1.5(二)创建一个app并做一些配置
阅读量:4599 次
发布时间:2019-06-09

本文共 2788 字,大约阅读时间需要 9 分钟。

这里我学习的呢是刘江老师的站,主要原因在于他这个版本新,还比较细节

网址先留一手,约等于在引用

开始正题:

1.在pycharm界面终端命令行里面

(点这个)

2.输入命令

python manage.py startapp polls

这里的polls是刘江老师教程中创建的投票系统的名字,你可以起任何名字

3.观察你左边的目录你会发现多了一个新的文件夹,里面还有好多py文件

4.编写视图

  这里的视图对应文件views.py,编辑,代码如下:

polls/views.py

from django.http import HttpResponsedef index(request):    return HttpResponse("Hello, world. You're at the polls index.")

这里你懂的引号里面那些话随便说

配置该app的url

polls/urls.py

from django.urls import pathfrom . import viewsurlpatterns = [    path('', views.index, name='index'),]

这里请记住,urlpatterns 是固定的名字,别写错了否则又是一阵找

然后配置项目url

pysite/urls.py

这里的pysite是我的项目所在处,请根据自己的情况修改

from django.contrib import adminfrom django.urls import include, pathurlpatterns = [    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/#databaseimport pymysql #这里的两行很重要pymysql.install_as_MySQLdb()DATABASES = { 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'myexp', 'HOST':'localhost', 'USER':'root', 'PASSWORD':'*******', 'PORT':'3306', '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

发现多了好几个新的表,那么,你的任务基本完成,数据库算是连上了嘿。

 

转载于:https://www.cnblogs.com/lovely-lisk/p/11031862.html

你可能感兴趣的文章
JAVA array,map 转 json 字符串
查看>>
2017-12-27练习
查看>>
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端...
查看>>
Python学习笔记
查看>>
unshift()与shift()
查看>>
使用 NPOI 、aspose实现execl模板公式计算
查看>>