django+xadmin在线教育平台(四)

3-2 配置表单页面

必要的该说的,该了解的

前置条件:

你已经学习了前面教程。将项目的文件夹目录结构,setting配置等修改完毕与我保持一致。

本节通过Django快速的配置一个留言板页面来学习

Django从请求到响应的整个完整流程。为我们开发在线教育平台打下基础。

mark

上图便是本节教程所要用到的静态页面: 前往Github下载:form.html

具体的业务:填写信息 -> 然后点击提交 ->数据被存储到数据库。

这个html是一个单文件,里面已经包含了css js内容。

将html文件整合进项目操作步骤

html文件直接复制进templates目录.

mark

创建static目录下的css文件夹static/js

  • 在css中再新建一个style.css

mark

  • form.html中点击<style>标签左侧减号。将style内容收成一行。然后把这一行内容剪切粘贴到style.css

mark

  • 粘贴进去之后,将首尾两个<style>删除,shift + tab可以将css格式化更整齐。
  • form.html新建<link>来引入css。(文件里其实已经先加上了,学一种操作而已)
<link rel="stylesheet" href="/static/css/style.css">

配置Django连接Mysql数据库

setting.py 大概80行找到:

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

这是Django默认与自己项目根目录下的db.sqlite3连接的设置。

mark

我们的项目是与mysql连接,所以我们要改成如下:

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

其中的name应设置为我们中在Navicat中新建的数据库名字。名字一定要保持一致

这时要将我们之前建的表提前全部删除掉。

mark

配置mysql驱动和seeting文件。

点击Tools 菜单下 Run manage.py Task我们会发现报错了:

    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

由错误信息我们可以看出是因为没有安装数据库驱动模块MySQLdb

mark

cmdworkon进我们的虚拟环境目录。pip install mysql-python

然后会发现报错:

mark

_mysql.c(42) : fatal error C1083: Cannot open include file: ‘config-win.h‘:
No such file or directory error: command
‘"C:\Users\mtian\AppData\Local\Programs\Common\Microsoft\Visual C ++
for Python\9.0\VC\Bin\amd64\cl.exe"‘ failed with exit status 2

前往地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python

下载MySQL_python_1.2.5_cp27_none_win_amd64.whl到本地,放到桌面。

然后使用下面命令进行安装:注意是在虚拟环境下。

cd Desktop
pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl

mark

这个时候我们再次点击Tools 菜单下 Run manage.py Task会看到已经没有刚才的错误。

mark

但是会有红框里的警告,面向强迫症解决方案是setting.py 新增STATIC_ROOT = ‘/static/‘

但其实现在还没有用到这个参数。后面用到我们再配置。(推荐自行克服强迫症)

输入下面命令来生成表:

makemigrations
migrate

mark

这时我们去Navicat查看会发现为我们生成了很多表。

mark

这些都是Django系统默认的内置数据表。

做完这些操作我们可以点击Run来运行项目,

然后到http://127.0.0.1:8000/来访问看是否运行成功。成功页面(It worked)

配置form页面展示出来:

DjangoGetStarted/urls.py修改如下:

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^form/$‘, getform) #这行是新增加的.
]

新增加url(r‘^form/$‘, getform),^是代表以form为开头,$代表以/结尾的地址。

这里getform 是对于这个url的相应处理的view。我们先去创建一个.

message/views.py添加如下代码:

def getform(request):
    return render(request, ‘message_form.html‘)

request 参数是一个django的http request对象。(基础)

这里我们可以按住ctrl + 左键 跟踪到我们的render函数里面。

Alt + 左箭头 回来。

def render(request, template_name,...):

源代码解读:可以看到我们的render需要一个request对象template_name参数

注意:记性好的还记得我们提供的源文件是form.html

知识点:django内置了很多html页面,form会先从内置中寻找。所以我们得改。

因此我们需要右键如下图Refactor修改from.htmlmessage_form

mark

如果我们的项目在运行,ctrl + s会自动重启我们的项目。

这时我们有了view,我们可以去配置完整的url了(前面已经配完整的检查一遍):

DjangoGetStarted/urls.py

from message.views import getform

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^form/$‘, getform)
]

这里我们不能加括号否则会变成方法的调用。

按住ctrl + render 跟踪到我们的url函数里面查看源码如下:可以看到它除过一组正则表达式,还需要接收一个view对象。

def url(regex, view,...):

如果getform加上括号会报错:

TypeError: getform() takes exactly 1 argument (0 given)

访问http://127.0.0.1:8000/ 正常结果:Page not found

Using the URLconf defined in DjangoGetStarted.urls, Django tried these URL patterns, in this order:

^admin/
^form/$

是因为我们在url中加入了个人的配置^form/$,它就不会采用默认配置了。

原因:(源码探究标记点)

这时访问:http://127.0.0.1:8000/form/

旧版本pycharm会报:TemplateDoesNotExist错误。我的新版本pycharm并没有出现。

重要代码在DjangoGetStarted/settings.py 60行左右

# 指明我们的templates目录路径
‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]
# 老版本pycharm创建django项目该值为空。

现在再次访问 http://127.0.0.1:8000/form/

页面出来了但是样式没有。static目录下的css文件提示没有找到。

mark

Setting中静态文件的配置,这是因为我们setting中的

STATIC_URL = ‘/static/‘

只说明了目录的名称。并没有指明查找的根路径。添加下面代码:

STATIC_URL = ‘/static/‘
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, ‘static‘)
]

过程中看似不停的出错,其实是为了让大家更好记住该记住的。

项目配置流程图

我们刚才是以倒序:

  1. 把html文件放进来
  2. 通过简单的url配置来访问html。
  3. 发现找不到页面,所以我们设置setting中DIRS
  4. 文件找到了又说找不到静态文件,我们设置了STATICFILES_DIRS

mark

这是我们的整体流程图,推荐新建一个项目再按照正向流程图来一遍。

后面我们的工作会围绕从migration生成数据表往下的内容展开。

原文学习来自简书,作者:天涯明月笙
原文链接:https://www.jianshu.com/p/783ac2f28027

原文地址:https://www.cnblogs.com/xinjie57/p/9180513.html

时间: 2024-10-14 02:41:04

django+xadmin在线教育平台(四)的相关文章

django+xadmin在线教育平台(十六)

7-7 modelform 提交我要学习咨询1 对应表userask form会对字段先做验证,然后保存到数据库中. 可以看到我们的forms和我们的model中有很多内容是一样的.我们如何让代码重复利用呢? 使用modelform解决这个问题. # encoding: utf-8 from django import forms from operation.models import UserAsk __author__ = 'mtianyan' __date__ = '2018/1/12

django+xadmin在线教育平台(十五)

7-4 课程机构列表页数据展示2 前去html中进行数据填充 mark 可以看到所有城市是通过a标签,当前选中城市为active. mark 之后把下面的写死的城市删除掉. mark 这时就是我们在后台添加的数据了 mark 可以看到每个课程机构都是一个dl 同理使用for循环. 如何将imageField转换为图片地址 数据库中img存放的是字符串:相对路径 mark mark 上图这种取法会取出一个相对地址. mark 将setting中配置的mediaurl放在前面可以补全地址. 设置me

django+xadmin在线教育平台(三)

通过留言版功能回顾django基础知识 将对于django目录结构,使用Django快速搭建可以提交的表单页面,models.py , urls.py, views.py. 从数据库中取出数据展示到html中:Django Template的配置. 即django的基础知识通过这个留言板项目进行一个全面细致的学习. 3-1 django目录结构 django目录: projectname : 保存Django项目的urls,setting,uwsgi文件 如下图新建一个Django项目Djang

Django打造在线教育平台_day_3: 搭建后台管理系统Xadmin

xadmin是比Django自带的admin更加强大的系统 1.安装xadmin的两种方式: 方式一:pip install xadmin 方式二:github下载最新的源码(推荐,因为功能最新) 2.方式一安装:虚拟环境下 pip install xadmin python3的环境安装xadmin时,直接pip install xadmin出现 README.rst这个文件的编码有问题,可以内容没什么重要的,可以直接到github上下载安装包,然后新建一个txt空文件,把文件名改成README

Django打造在线教育平台_day_3: 搭建后台管理系统Xadmin之其他app的数据表注册

courses/adminx.py import xadmin from .models import Course, Lesson, Video, CourseResource class CourseAdmin(object): list_display = ['name', 'desc', 'detail', 'degree','learn_times', 'students','fav_nums','image','click_nums','add_time'] # 列表显示 searc

Django打造在线教育平台_day_4: 完成注册功能

1.把注册html页面复制到templats目录下 2.把功能写在users/views.py文件中 3.urls.py文件添加代码 from users.views import RegisterView urlpatterns = [ url(r'^register/$', RegisterView.as_view(), name='register'), ] 4.修改index与register.html <a style="color:white" class="

Django打造在线教育平台_day_3: 搭建后台管理系统Django自带的admin

1.后台管理系统的特点:权限管理.少前端样式.快速开发 2.Django自带的admin后台管理系统,新建项目时会自动建立,admin也可以看成一个app 运行了程序打开链接:http://127.0.0.1:8000/admin/,就进入了后台管理系统登录页面 3.新建超级用户: Tools 工具栏运行 run manage.py Task 输入:createsuperuser,再根据提示输入用户名.邮箱.密码 4.登录成功: 5.把系统语言设置为中文与设置本地时间:修改MxOnline/se

Django打造在线教育平台_day_2:新建users app 编写models之扩展user表

1.使用pycharm创建app Tools 工具栏运行 run manage.py Task 输入:startapp users 2.查看django生成的默认的users表auth_user,看字段能否满足需要的,不能就在users/models.py中编写models自定义user表继承auth_user的字段. from django.db import models # AbstractUser包含的Django默认生成的user字段 from django.contrib.auth.

Django打造在线教育平台_day_3:全局配置

1.主题设置:在users/adminx.py文件中 from xadmin import views class BaseSettings(object): enable_themes = True # 使用主题功能 use_bootswatch = True xadmin.site.register(views.BaseAdminView, BaseSettings) 效果如下: 2.修改与 在users/adminx.py文件中 from xadmin import views class