首先在Navicat Premium中新建连接rem
在rem中创建一个db_liwangdong数据库,并关闭该数据库
在dbs虚拟环境中,dbs_code文件下执行
| django-admin startproject connect cd connect python manage.py startapp c
|
这样就创建好了django项目
在小connect文件夹中的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| __init__.py文件中 添加 import pymysql pymysql.install_as_MySQLdb()
settings.py文件中 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'c', ] 添加app名称,也就是'c' 同时填写DATABASES中数据库的相关信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db_liwangdong', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', } } 同时在末尾STATIC_URL = '/static/'处加入
STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]
在总connect文件夹中 加入文件夹templates用来存放html,加入static文件夹存放img,js,css 在小connect文件夹中的setting.py 添加import os 并在其中的TEMPLATES的DIRS加入os.path.join(BASE_DIR,'templates')
在STATIC_URL = '/static/'末尾加入 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]
|
在templates中新建list.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> 番剧列表<hr> <br> {% for i in anime %} {{i.0}}--- {{i.1}}--- {{i.2}} <br> {% endfor %} </body> </html>
|
在templates中新建index.html,用来显示登录按钮Login
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>请点击Login进行B站用户登录</h1> <a href="/login/">Login</a> </body> </html>
|
在templates中新建login.html,用来显示index.html跳转后的内容
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>用户登录</h1> <form method="post" action="/login/"> {%csrf_token%} user:<input type="text" name="user"> pwd:<input type="password" name="pwd"> <input type="submit" value="登录"> </form> </body> </html>
|
在c中的views.py中,写入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| from django.http import HttpResponse from django.shortcuts import render, redirect
from django.db import connection
def list(request): cur1 = connection.cursor() cur1.execute('select * from anime') rows = cur1.fetchall() tmp = { 'anime':rows } return render(request,'list.html',context=tmp)
def index(request): return render(request,'index.html')
def login(request): if request.method=='POST': user=request.POST.get('user') pwd=request.POST.get('pwd') cur2 = connection.cursor() sql = "select pwd from users where user='"+user+"'" cur2.execute(sql) i = cur2.fetchone() if int(i[0]) == int(pwd): return redirect('/list') else: print('登录失败') return render(request,'login.html')
|
在小connect文件夹的urls.py中,写入
| from django.contrib import admin from django.conf.urls import include, url from django.urls import path
urlpatterns = [ path('admin/', admin.site.urls), path('', include('c.urls')) ]
|
在c文件夹中,创建一个urls.py文件,并写入
| from django.urls import path from . import views
urlpatterns = [ path('', views.index), path('login/',views.login), path('list/',views.list), ]
|
主项目里面的url负责分配url到不同的app里面,app里面的url块负责自己的路由选择
| 大概的流程图{在templates添加html文件在app下的view添加def ...(request)return render(request,'...')在app下的urls中添加路径path['.../',views.....]}
|
现在输入python manage.py runserver即可访问页面
关于数据迁移,这部分是减轻程序员工作,在python中直接建表,并用python类型的操作集合(增删改查),但是在本项目中,只用from django.db import connection即可
在c文件夹中
向models.py文件添加
| class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)
|
接着在终端输入
| python manage.py makemigrations python manage.py migrate
|
即可在navicat premium中的数据库中找到Person表