绿色:代表可以自定义的名称
红色:代表命令
紫色:代表运行的文件
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的数据库增删改查