Django学习随记

绿色:代表可以自定义的名称

红色:代表命令

紫色:代表运行的文件

pip install    == 安装包命令

pip unistall  == 卸载包命令


创建virtualenv虚拟环境管理(避免背包和包太多而引起的一些不必要错误)

【创建“歪球一恩威”】

进入CMD命令行 (以管理员身份运行)

C:\Users\Administrator>  pip install virtualenv  (安装命令)

C:\Users\Administrator> virtualenv testvir  (新建“歪球一恩威”,testvir是环境名称(目录),这里要注意这个命令是以当前路径创建)

【进入“歪球一恩威”环境】

C:\Users\Administrator> cd testvir (进入testvir目录)

C:\Users\Administrator>testvir> dir  (查看目录文件)

C:\Users\Administrator>testvir> cd Scripts (进入Scripts目录)

C:\Users\Administrator>testvir>Scripts> dir (查看目录文件)

C:\Users\Administrator>testvir>Scripts> activate.bat (进入虚拟环境)

(tesstvir)C:\Users\Administrator>testvir>Scripts>    (前面多了个括号表示已经进入虚拟环境)

(tesstvir)C:\Users\Administrator>testvir>Scripts> pip list  (查看已经安装的库)

(tesstvir)C:\Users\Administrator>testvir>Scripts> deactivate.bat  (退出当前虚拟环境)


【虚拟环境管理器(属于另外一个包)】

C:\Users\Administrator\testvir\Scripts>pip install virtualenvwrapper-win (安装管理器,win平台需要-win,linux不需要加-x)

C:\Users\Administrator\testvir\Scripts>mkvirtualenv testvir2 (创建虚拟环境testvir2)

(testvir2)C:\Users\Administrator\testvir\Scripts>   (创建成功并进入了testvir2虚拟环境)

(testvir2)C:\Users\Administrator\testvir\Scripts> deactivate (退出当前虚拟环境)

【管理虚拟环境】

C:\Users\Administrator\testvir\Scripts> workon (查看虚拟环境)

C:\Users\Administrator\testvir\Scripts> workon testvir2 (进入testvir2虚拟环境)

(testvir2) C:\Users\Administrator\testvir\Scripts>  (已经进入虚拟环境)

(testvir2) C:\Users\Administrator\testvir\Scripts> deactivate (退出当前虚拟环境)


【pycharm设置项目】

创建Django (创建Django前请在)

项目目录:C:\Users\Administrator\PycharmProjects\untitled (重要:命名不要以django或者内置的命令重复命名Django项目名称为untitled 

解释器目录:C:\Users\Administrator\Envs\testvir2\Scripts\python.exe  (注意Envs里面的)



【pycharm之app文件创建】

pycharm 依次点击菜单栏 Tools >>> Run manage.py Task >>> (进入django命令行)

manage.py@untitled> startapp message [destination]  (回车键创建一个message的app应用)

创建完成后项目中会有message文件夹,里面包含了必要的py文件


创建文件夹用于储存js和css等,直接在项目下新建文件夹static、log、media

static   储存js、css等

log    储存日志文件

media  储存用户上传的文件

因为网站可能会涉及到很多的app应用文件,所以我们建立一个apps文件夹来存放各个app项目文件,并把刚才的message文件夹拖放到apps文件夹内

假果我们需要调用apps内的message文件夹内的文件时,一般我们需要 form apps.message import views(显然这样导入会比较麻烦)


所以我们可以直接用pycharm将文件夹设置成为根目录索引

右键单击文件夹 >> Mark directory as >> Sources root (设置后导入就可以直接用)form message import views

这样设置是基于pycharm的,在命令行执行时会报错;所以我们还需要在项目文件夹中的settings.py文件内导入message文件夹才可以。


【导入html文件】

templates文件夹主用于储存html静态文件


【数据库配置】

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.
sqlite3',
        'NAME':
os.path.join(BASE_DIR, 'db.sqlite3'),

    }


配置更改为MYSQL的数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.
mysql',
        'NAME': "
testdjango",
       
'USER':"root",
        'PASSWORD':"",
        'HOST':"127.0.0.1"

    }

}

修改后需要重新生成一下配置

pycharm 依次点击菜单栏 Tools >>> Run manage.py Task >>> (创建django的数据表)

(可能会出现没有安装mysqldb驱动引起的错误,进入虚拟环境中pip install mysql-python即可,安装mysql时也有可能出现没有c++之类的错误,详细解决方案可参考:https://blog.csdn.net/u012882134/article/details/51934165

下载好驱动之后直接 CMD  CD 目录/.... >pip install MySQL_python.......whl


pycharm 依次点击菜单栏 Tools >>> Run manage.py Task >>> (创建django的默认数据表)

manage.py@untitled> migrate [appname]  (回车键创建一个message的app应用)

稍等一下django就自动创建好默认的数据表了


【url配置】

urls.py文件  

填写对应的url配置如:url(r'^admin/', admin.site.urls),   # 对应的正则,指向的页面

from message.views import getform  (同时记得在url配置的上面导入app函数)

url(r'^form/$',getform)  # 这是我们配置的url映射到getform函数


相对的在app应用的views.py中写入逻辑函数

def getform(request):

    return render(request,'message_form.html')  # 返回一个request对象,html文件名称


填写好后即可在浏览器中输入地址测试是否生效

http://127.0.0.1:8000/form

如果未出现html页面,请检查 settings.py 配置文件中的 DIRS 是否为相对路径(下面的已经为相对路径)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]  # 路径(根目录,文件夹)
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]


访问后可能还会出现无法加载CSS文件,但是浏览器开发模式地址是正确的却显示404,这个问题涉及到django的静态文件配置

如果有html文件但未出现css文件,请检查 settings.py 配置文件中的 STATIC_URL 是否为相对路径(下面的已经为相对路径)

新增STATICFILES_DIRS常量

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static') # 路径(根目录,文件夹)
]

BASE_DIR是Django内置的根目录路径






【写入数据库表操作】

message/migratinos/models.py

class UserMessage(models.Model):
    name = models.CharField(max_length=20, verbose_name=u"用户名")
    email = models.EmailField(verbose_name=u"邮箱")
    address = models.CharField(max_length=100,verbose_name=u"联系地址")
    message = models.CharField(max_length=500,verbose_name=u"留言信息")


    class Mata:
        verbose_name = u"用户留言信息"

 pycharm 依次点击菜单栏 Tools >>> Run manage.py Task 

manage.py@untitled> makemigrations message [appname] (直接运行会报错如下)

No changes detected in app 'messages'     (这是因为还没有在项目settings.py内注册app)

Process finished with exit code 0

 (注册步骤如下):

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'message', # 新增message即可注册
]
另外因为涉及到中文字符,所以需要头部定义成为utf-8编码(app的models.py文件)


manage.py@untitled> makemigrations message [appname] (运行出现以下信息已经创建了模型(model UserMessage))

(既:刚才在models.py里面创建的UserMessage类)

Migrations for 'message':
  0001_initial.py:
    - Create model UserMessage

Following files were affected 

然后继续

manage.py@untitled> migrate message [appname]  (创建数据表,如果成功则显示以下信息)

Operations to perform:
  Apply all migrations: message
Running migrations:
  Rendering model states... DONE
  Applying message.0001_initial... OK

Process finished with exit code 0

这样我们在数据库中查看时就多出了一个 message_usermessage 数据表


【model的数据类型】

models.ForeignKey           # 外键类型
models.DateTimeField      # 时间类型
models.IntegerField          # 整型
models.IPAddressField      # IP地址类型
models.FileField                # 上传文件用到的类型
models.ImageField           # 图片类型

.......

(查看数据类型还可以Ctrl键+鼠标左键点击models (查看数据类型)>>>  field (查看Django默认类型) )


我们还可以设置字段的各种定义:

class UserMessage(models.Model):
    object_id = models.CharField(max_length=50,default="",primary_key=True,verbose_name=u"主键")  # 设置主键,默认Django已经自动创建ID作为主键
    name = models.CharField(max_length=20, null=True,blank=True,default='',verbose_name=u"用户名") # 允许为空,default设置默认值
    email = models.EmailField(verbose_name=u"邮箱")
    address = models.CharField(max_length=100,verbose_name=u"联系地址")
    message = models.CharField(max_length=500,verbose_name=u"留言信息")


    class Mata:
        verbose_name = u"用户留言信息"

修改数据模型后重新运行一下

pycharm 依次点击菜单栏 Tools >>> Run manage.py Task 

manage.py@untitled> makemigrations message [appname] 

Migrations for 'message':
  0002_auto_20180715_1630.py:
    - Remove field id from usermessage
    - Add field object_id to usermessage

    - Alter field name on usermessage

(告诉我们修改了哪些信息)

manage.py@untitled> migrate message [appname]

Operations to perform:
  Apply all migrations: message
Running migrations:
  Rendering model states... DONE
  Applying message.0002_auto_20180715_1630... OK

(告诉我们操作成功)


    class Mata:
        verbose_name = u"用户留言信息"
        verbose_name_plural = verbose_name    # 复述信息,不指定名称会在后台显示后面加S,所以我们直接调用verbose_name避免
        db_table = "user_message"  # 设置表名
        ordering = "-object_id"  # 排列方式(-倒序)

下一篇:Django的数据库增删改查

猜你喜欢

转载自blog.csdn.net/qq_40134903/article/details/81042582