Django_2_进阶
|Word count:1.1k|Reading time:5min|Post View:
本文将介绍一些 Django 的进阶用法
1 用户管理
下面介绍最简单的用户管理方法:用 admin 管理员创建普通用户;仅实现
login.html 界面,使用 django 内部逻辑完成用户登录。
1.1 建库
1.1.1 建库
1 2
   | $ python manage.py migrate $ python manage.py createsuperuser 
   | 
 
1.1.2 修改配置文件
1
   | $ vi mytools/settings.py
   | 
 
加入
1 2 3
   | AUTHENTICATION_BACKENDS = [     'django.contrib.auth.backends.ModelBackend', ]
   | 
 
1.2 添加新用户
访问 admin 界面,用刚才创建的 superuser 登录
http://localhost:8001/admin/
按提示创建几个 user 用户
1.3 在界面中调用登录界面
1.3.1 在接口前加装饰器
1
   | $ vi mytools/myapp/views.py
   | 
 
加入
1 2 3 4
   | from django.contrib.auth.decorators import login_required
  @login_required
 
   | 
 
1.3.2 添加登录界面
1
   | $ vi mytools/myapp/urls.py
   | 
 
加入
1 2 3 4 5
   | from django.contrib.auth import views as auth_views
  urlpatterns = [ 	path('accounts/login/', admin.site.urls), ]
   | 
 
1.3.3 实现登录界面
添加 login.html 界面
1 2
   | $ mkdir templates/registration/ $ vi templates/registration/login.html
   | 
 
添加以下内容,界面比较丑:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Login</title> </head> <body>     <h1>Login</h1>     <form method="post">         {% csrf_token %}         <label for="username">Username:</label>         <input type="text" id="username" name="username" required><br>         <label for="password">Password:</label>         <input type="password" id="password" name="password" required><br>         <button type="submit">Login</button>     </form> </body> </html>
   | 
 
2 使用网页模板
实现简单的前后端界面
2.1 设置模板目录
修改配置文件:
1
   | $ vi mytools/settings.py
   | 
 
修改模板目录,形如:
1 2 3 4
   | TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': [os.path.join(BASE_DIR, 'templates'),], 
   | 
 
2.2 创建模板
1 2
   | $ mkdir templates/myapp -p $ vi templates/myapp/translate.html
   | 
 
加入网页内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>英文翻译中文</title> </head> <body>     <h1>英文翻译中文</h1>     <form method="post">         {% csrf_token %}         <label for="english_text">请输入英文:</label>         <input type="text" id="english_text" name="english_text" required>         <button type="submit">翻译</button>     </form>          {% if chinese_translation %}     <p>中文翻译结果:{{ chinese_translation }}</p>     {% endif %} </body> </html>
   | 
 
2.3 使用模板
1
   | $ vi mytools/apps/views.py
   | 
 
加入
1 2 3 4 5 6
   | def translate(request):     if request.method == 'POST':         english_text = request.POST.get('english_text', '')         chinese_translation = english_text.upper()         return render(request, 'myapp/translate.html', {'chinese_translation': chinese_translation})         return render(request, 'myapp/translate.html')
   | 
 
3 使用 css 样式
3.1 创建静态文件目录
1 2
   | $ mkdir myapp/static $ vi myapp/static/styles.css
   | 
 
内容大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   |  body {     font-family: Arial, sans-serif;     font-size: 16px;     line-height: 1.5; }
 
  a {     text-decoration: none;     color: #007bff; }
 
  h1, h2, h3 {     font-family: 'Times New Roman', serif;     font-weight: bold;     color: #333; }
 
  body {     background-color: #f0f0f0; }
 
  | 
 
3.2 修改配置文件
1
   | $ vi mytools/settings.py
   | 
 
加入静态数据相关设置
1 2 3 4 5
   | STATIC_URL = '/static/'  STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  STATICFILES_DIRS = [      os.path.join(BASE_DIR, 'myapp/static'), ]
   | 
 
生成
1
   | $ python manage.py collectstatic 
   | 
 
设置之后请重启 django 服务以确保生效
3.3 设置 html 的格式
1 2 3 4 5
   | {% load static %} <html> <head>     <link rel="stylesheet" type="text/css" href="{% static 'styles.css'  ...
  | 
 
注意:第一行和第四行都需要添加,否则不能生效
4 使用 bootstrap 主题
4.1 安装库
1
   | pip install django-bootstrap5
   | 
 
在 settings 中加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
   |  BOOTSTRAP3={     'include_jquery':True,     }      INSTALLED_APPS = [     'django_bootstrap5'     ... ```    
 
 
  以 FLAT-UI 为例,安装主题:
  https://github.com/designmodo/Flat-UI
  直接下载它的 release 版本
  ``` shell sudo cp /home/xieyan/下载/software/Flat-UI-2.3.0/dist/ ui/mytools/myapp/static/flat-ui -a
 
  | 
 
在 html 文件头中加:
1 2
   | <link rel="stylesheet" href="{% static 'flat-ui/css/flat-ui.min.css' %}"> <script src="{% static 'flat-ui/js/flat-ui.min.js' %}"></script>
  | 
 
4.3 其它模板下载
https://bootswatch.com/
5 参考
使用django-bootstrap3创建网站