Django爬过的坑坑~(2020年5月)

Django爬过的坑坑~(2020年5月)

大噶好,我作为一名新人,在学习的过程中难免会遇到让人抓狂的坑坑,一丁点小错误就把人搞得头皮发麻。咳咳,首先这次我第一次发博客,目的是想分享一下自己在Django中遇到的各种坑,此坑我用了半个月的时间,终于进行到了下一阶段,一把把头发随风飘起……正所谓前猿栽树,后猿乘凉,废话不多说搞起~

Django 安装、配置、创建项目

Django是由Python编写的Web框架,依赖Python环境,首先安装Python,建议安装Python3.0以后的,这个自行选择。
我安装的是Anaconda3,个人挺喜欢用的,jupyter 我用起来感觉比较舒服,文件的管理也很方便。
总之,Python3安装好后,自带pip,在命令窗口(win+R 后输入cmd回车)输入一下命令:

pip install django

如果要指定版本,可使用pip install django==3.0这种形式。

安装好后,可以输入pip list 检查 一下。(●ˇ∀ˇ●)

接着配置一下环境变量,在Python根目录下的Scripts目录中可找到一个django-admin.exe文件,Anaconda3也一样,这是Django的核心管理程序,将它加入操作系统的环境变量中,这样在以后的调用会比较方便。
右键我的电脑,点击属性,高级系统设置,点击环境变量,在path中添加Scripts目录。我安装在D盘,下面的Anaconda3。 D:\Anaconda3\Scripts 就这样,放到里面就好。
再回到命令窗口,运行django-admin help,能看到下面的内容表示环境变量设置成功。

C:\User>django-admin help

Type 'django-admin help ’ for help on a specific subcommand.

Available subcommands:

[django]
check
compilemessages
createcachetable
dbshell
diffsettings
dumpdata
flush
inspectdb
loaddata
makemessages
makemigrations
migrate
runserver
sendtestemail
shell
showmigrations
sqlflush
sqlmigrate
sqlsequencereset
squashmigrations
startapp
startproject
test
testserver
Note that only Django core commands are listed as settings are not properly configured (error: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.).

然后可以开始创建项目了,在cmd命令窗口输入django-admin startproject myself,这样会在当前目录下创建一个名字叫做myself的项目。ps:windows下可以用tree /f看目录的结构,非常帅气(′д` )…
接着cd myself进到myself目录下。
运行python manage.py runserver,Django会以127.0.0.1:8000这个默认配置启动服务器。
打开你的浏览器,在地址栏输入127.0.0.1:8000,如果看到一个小火箭,就说明Django一切正常,可以搞事情啦!

Django创建应用app、视图views

前面说了自己用的Anaconda3里的jupyter,接着又发现VScode这个编辑器也用的特别舒服,于是一代新人换旧人~ o( ̄▽ ̄)o~这里真的推荐用VScode作为编辑器,轻便而且还支持中文哟。
用VScode打开我们的项目文件myself,以后就在这儿进行编辑代码啦。

开始创建app

在VScode中的菜单栏,打开终端,输入python manage.py startapp polls,切记一定要在项目文件夹下哦。。

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
views.py

就可以看到我们创建的这个文件夹polls,下面有这些东西。

接着我们编辑views.py这个文件。
编写代码

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

为了调用该视图,我们还需要编写路由路径。在polls目录中新建一个文件,名字为urls.py,在其中输入代码如下:

rom django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

此时,目录的文件结构是这样的:

polls/
init.py
admin.py
apps.py
migrations/
init.py
models.py
tests.py
urls.py
views.py

接下来,在项目的主目录下的myself文件下的urls.py文件中添加urlpattern条目,指向我们刚才建立的polls这个app独有的urls文件,就是表示俩能连到一块儿啦。注意这里需要导入include模块,打开myself/urls.py文件,代码如下:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

好了,设置成功后,启动服务器python manage.py runserver,然后在浏览器中访问地址http://localhost:8000/polls/。记得在端口后面加app应用的名字哦。一切正常的话,你将看到“Hello, world. You’re at the polls index.”

Django 连接mysql数据库(巨坑)

这里我殚精竭虑,终于花费了无数个夜晚和头发成功实现,帮助大家排忧解难。( •̀ ω •́ )y

数据库配置

首先打开myself/settings.py配置文件,这是整个Django项目的设置中心。Django默认使用SQLite数据库,因为Python源生支持SQLite数据库,所以你无须安装任何程序,就可以直接使用它。
但我想使用其他的数据库,就得安装相应的数据库操作模块,比如是mysql。于是乎,没安装的先安装mysql 数据库,自己百度安装调试好我就不细写了(¬︿̫̿¬☆)。然后,开始安装几个比较重要的包。(这里存在各种问题,反正把几个用来连的包都下载了,注意版本,统统下载最新的,或者比最新的低一个版本
安装pymysql这个包。pip install pymysql
然后是这个包。pip install mysql-connector-python
然后是这个包。pip install mysqlclient
然后是这个包。pip install mysqlparse,这个包下完上面mysqlclient后可能会自带,可以pip list检查以下。
总之,以上几个包非常重要,尤其是mysqlclient,这里尽可能下载最新的版本,后面会有报错,下面会继续处理。

当安装好后,继续回到我们的myself项目中,将settings.py文件中DATABASES位置的’default’的键值进行相应的修改,用于连接你的数据库。如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'djangodb', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '3306', # Set to empty string for default.
        }
}

把原来django自带的那些内容都删掉后根据自己的数据库,进行修改。

接着我们在polls/model.py中增加内容。简单的理解,这里添加model其实就是mysql中创建表的过程。代码如下:

from django.db import models


class text1(models.Model):
    name_text = models.CharField(max_length=200)

就是增加一个名字叫text1的表,到时候会在mysql中显示的名字是polls_text1。

接着,我们再回到myself/setting.py中,找到INSTALLED_APPS ,把
‘polls.apps.PollsConfig’,增加到下面,反正按照这个格式添加就行。上面的内容可以注释掉,反正也用不到,就是django自带创建的表,如下:

INSTALLED_APPS = [
    # 'django.contrib.auth',#身份认证系统
    # 'django.contrib.contenttypes',#内容类型框架
    # 'django.contrib.sessions',#会话框架
    # 'django.contrib.messages',#消息框架
    # 'django.contrib.staticfiles',#静态文件管理框架
    'polls.apps.PollsConfig'
]

完成到这一步,命令窗口输入 python manage.py makemigrations polls,启动app,如果没报错的话就运行服务器python manage.py migrate,就能实现mysql的创建表了。但是,嘿嘿嘿嘿,由于各种坑,需要进行以下的爬坑步骤。

爬坑步骤一:在myself文件和polls文件两个文件下,在_init_.py中添加下面两行代码:(都要添加)
import pymysql
pymysql.install_as_MySQLdb()
爬坑步骤二:在polls下的apps.py 中,改成如下图所示:
from django.apps import AppConfig


class PollsConfig(AppConfig):
    name = 'polls'
爬坑步骤三:如果在运行命令后报错如下所示:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.2

遇到这种情况的话我的办法是修改源码,首先进到我的电脑里python主目录下,比如是C:\Python37\Lib\site-packages\django\db\backends\mysql(python安装目录)打开base.py,注释掉以下内容:

if version < (1, 3, 13):
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; you have %s.’ % Database.version)

如果改了后还是报同样的错误,那也可能不是这个文件夹,用全局搜索mysql文件夹,找到base.py然后注释掉上面的内容,注释掉一个base.py就行,都注释掉应该也不影响我猜,我只注释掉上面那个base.py 嘿嘿~~/(ㄒoㄒ)/~

上面的步骤如果都完成了,就可以按照上面的代码python manage.py makemigrations polls,启动app。

就在此时,如果又有以下所示的报错:

LookupError: No installed app with label ‘admin’.

没错就这鬼东西我竟然搞了两周,最后我修改了myself文件下的urls.py,如下所示:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls'))
]

我删掉了一句代码,path('admin/', admin.site.urls),也不是所有人都和我一样的问题,但我确实得删掉才能成功。最终到了这一步终于不再报错了 (ಥ _ ಥ)

最后,python manage.py makemigrations polls启动后app后,不报错就可以启动服务了。python manage.py migrate

PS C:\User\myself> python manage.py makemigrations
polls Migrations for ‘polls’: polls\migrations\0002_text1.py
Create model text1
PS C:\User\myself> python manage.py migrate Operations to perform: Apply all migrations: auth,
contenttypes, polls, sessions Running migrations: Applying
polls.0002_text1… OK

看到OK的时候那个心情,我甚至*&%**%%#¥@……

然后就能打开mysql看看里面的表了~~

最后到这里就结束了,后面可能会继续更新。咳咳,希望能对有需要的人有所帮助,如有问题可以留言,看到会回复~~
给个赞b( ̄▽ ̄)d

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值