这一篇将介绍创建项目的一些准备工作,包括创建 git 服务器,创建 Django 项目并修改配置连接到 mysql 数据库,添加本地配置文件,添加 URL 和模板。
创建 git 服务器
因为是三个人合作,所以我在服务器(CentOS7)上新建了一个 git 仓库。
参考:搭建Git服务器
在服务器上执行:
yum install git # 如果没有安装过 git,则需要安装一下
sudo adduser git # 添加一个系统用户:git
vim /home/git/.ssh/authorized_keys # 编辑系统用户 git 的“已授权的公钥列表”文件
每个成员在终端执行
ssh-keygen -t rsa -C "你的邮箱" # 也可以ssh-keygen回车然后按提示操作
收集每个成员的公钥 ~/.ssh/id_rsa.pub
,放到 authorized_keys
中,一行一个。
在服务器上进入适当目录
cd /home/
sudo git init --bare sample.git # 新建一个 sample.git 的仓库
sudo chown -R git:git sample.git # 修改拥有者
每个成员克隆服务器上的仓库到本地
git clone git@服务器地址:/home/sample.git
# 最终输出如下
# Cloning into 'sample'...
# warning: You appear to have cloned an empty repository.
安装 Django 和创建项目
环境:macOSX、python3.6
pip install django
django-admin startproject sample # 创建项目
cd sample
python manage.py startapp auth # 创建 app
# 如果没有安装过gi,可以装一个:https://www.gitignore.io/docs
gi python >> .gitignore # 创建git ignore文件
用 pycharm 打开项目之后设置项目的 interpreter,可以创建一个 venv。
连接 MySQL 数据库
我们在 MySQL 中创建一个数据库:
mysql -uroot -p
mysql> create database tdlte; # 创建名字为tdlte的数据库
编辑/sample/sample/settings.py
中的数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 使用 mysql
'NAME': 'tdlte', # 数据库名
'USER': 'root', # 数据库用户名
'PASSWORD': '', # 数据库密码
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
添加 local_settings.py
因为多个人开发,本地配置往往各不相同,一般可创建一个叫local_settings.py
的文件用来添加配置。
然后需要在settings.py
最后加上:
try:
from .local_settings import *
except ImportError:
pass
配置文件里的 INSTALLED_APPS
有一些自带的组件,比如用户管理。其中一些需要创建数据表,所以我们需要执行迁移命令,它会自动在数据库中创建相应的表:
python manage.py migrate
设置 URL
编辑sample/sample/urls.py
from django.contrib import admin
from django.urls import include, path
from django.views.generic import TemplateView
urlpatterns = [
path('admin/', admin.site.urls), # 内置的后台
path('auth/', include('auth.urls')), # 将 auth 里的 urls添加进来
path('', TemplateView.as_view(template_name='index.html'), name='index') # 使用内置的视图渲染主页
]
添加模板
以下是一个基于 Semantic UI 的示例。
创建sample/templates
目录,创建layout.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<title>{% block title %}{% endblock %} | Sample 系统</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.3/dist/semantic.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.3.3/dist/semantic.min.js"></script>
</head>
<body>
<div class="ui container">
{% block content %}
{% endblock %}
</div>
</body>
</html>
创建'index.html':
{% extends "layout.html" %}
{% block title %}首页{% endblock %}
{% block content %}
<div class="ui stacked segment">
<div class="header">
Welcome to our site!
</div>
<p>Fill out the form below to sign-up for a new account</p>
</div>
<form class="ui form attached fluid segment">
<div class="two fields">
<div class="field">
<label>First Name</label>
<input placeholder="First Name" type="text">
</div>
<div class="field">
<label>Last Name</label>
<input placeholder="Last Name" type="text">
</div>
</div>
<div class="field">
<label>Username</label>
<input placeholder="Username" type="text">
</div>
<div class="field">
<label>Password</label>
<input type="password">
</div>
<div class="inline field">
<div class="ui checkbox">
<input type="checkbox" id="terms">
<label for="terms">I agree to the terms and conditions</label>
</div>
</div>
<div class="ui blue submit button">Submit</div>
</form>
{% endblock %}
在sample/settings.py
中修改TEMPLATES
的DIRS
属性。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['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',
'tdlte.frontend.common',
],
},
},
]
运行项目
现在执行
python manage.py runserver
即可看到一个简单的页面。