python开发出来的crm系统_基于Django实现的CRM系统

前言:Django是一个python大而全的前端框架,Django自带的admin也是一个不错的信息管理系统,功能多,可拓展性强。那么,我们仿照Django-admin能不能自己写代码实现admin的主要功能呢?答案是当然可以!!!通过这个小项目的练习,可以更加深刻地理解其中的编程原理,升华自己的思想。

废话少说,接下来开始进入正题!!!

一、新建Django项目

Django的项目新建这里就不说了,此处省略100字.......

注意:需要注册两个app(stark,app01)stark是admin的翻版,名字无所谓。

二、修改stark中apps的代码

通过看django的源码可以得知:Django启动时,自动加载settings配置文件中的installed_apps,然后执行源码中的autodiscover()方法来顺序加载apps对应的admin.py文件。所以我们可以通过修改apps中的代码让django来执行我们写的stark.py文件而不执行admin.py文件.

stark中的apps.py文件:

from django.apps import AppConfig

from django.utils.module_loading import autodiscover_modules

class StarkConfig(AppConfig):

name = 'stark'

# 这个ready方法是固定不变的

def ready(self):

autodiscover_modules('stark')

三、重写StarkSite类的register方法来实现model的注册

先在app名为stark的文件夹下新建一个servers包,在servers下新建一个site.py文件,在site.py文件中写如下代码:

class StarkSite(object):

def __init__(self):

#定义一个字典用于存储接下来需要注册的model和对应congfig配置类

self._registry = {}

def register(self, model, admin_class=None):

# 设置配置类,有自定义的就用自定义的,没有就用默认的ModelStark

if not admin_class:

admin_class = ModelStark

#以model为键,配置类实例化对象为值进行注册

self._registry[model] = admin_class(model)

site = StarkSite()

四、在每个app下新建stark.py文件,通过调用StarkSite类来注册model表

执行每个app下的stark.py文件来注册所有app下用户提交的需要注册的model表和对应的config配置类

app01下的stark.py:

//导入默认配置类ModelStark,(这个类稍后再创建)

from stark.servers.site import ModelStark

//site是StarkSite类的实例化对象,通过模块导入实现的单利模式

from stark.servers.site import site

//导入app01下的models文件

from app01 import models

//注册models表

site.register(models.Book)

site.register(models.Publish)

site.register(models.Author)

site.register(models.AuthorDetail)

另附app01下的models.py:

from django.db import models

class Author(models.Model):

nid = models.AutoField(primary_key=True)

name = models.CharField(max_length=32,verbose_name='作者')

age = models.IntegerField(verbose_name="年龄")

# 与AuthorDetail建立一对一的关系

authorDetail = models.OneToOneField(to="AuthorDetail", on_delete=models.CASCADE)

def __str__(self):

return self.name

class AuthorDetail(models.Model):

nid = models.AutoField(primary_ke

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于Python+Django+MySQL实现的Web数据库系统的示例代码: 1. 首先,需要安装Django和MySQL依赖库。可以通过以下命令进行安装: ``` pip install Django pip install mysqlclient ``` 2. 创建Django项目和应用,可以通过以下命令进行创建: ``` django-admin startproject myproject cd myproject python manage.py startapp myapp ``` 3. 在Django项目的settings.py中,配置MySQL数据库连接信息: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 4. 在Django应用的models.py中,定义数据库模型: ``` from django.db import models class User(models.Model): name = models.CharField(max_length=50) email = models.EmailField() age = models.IntegerField() def __str__(self): return self.name ``` 5. 进行数据库迁移,创建User表: ``` python manage.py makemigrations python manage.py migrate ``` 6. 在Django应用的views.py中,编写增删改查的视图函数: ``` from django.shortcuts import render, get_object_or_404, redirect from .models import User from .forms import UserForm def user_list(request): users = User.objects.all() return render(request, 'user_list.html', {'users': users}) def user_detail(request, pk): user = get_object_or_404(User, pk=pk) return render(request, 'user_detail.html', {'user': user}) def user_new(request): if request.method == "POST": form = UserForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.save() return redirect('user_detail', pk=user.pk) else: form = UserForm() return render(request, 'user_edit.html', {'form': form}) def user_edit(request, pk): user = get_object_or_404(User, pk=pk) if request.method == "POST": form = UserForm(request.POST, instance=user) if form.is_valid(): user = form.save(commit=False) user.save() return redirect('user_detail', pk=user.pk) else: form = UserForm(instance=user) return render(request, 'user_edit.html', {'form': form}) def user_delete(request, pk): user = get_object_or_404(User, pk=pk) user.delete() return redirect('user_list') ``` 7. 在Django应用的urls.py中,配置URL路由: ``` from django.urls import path from . import views urlpatterns = [ path('', views.user_list, name='user_list'), path('user/<int:pk>/', views.user_detail, name='user_detail'), path('user/new/', views.user_new, name='user_new'), path('user/<int:pk>/edit/', views.user_edit, name='user_edit'), path('user/<int:pk>/delete/', views.user_delete, name='user_delete'), ] ``` 8. 在Django应用的templates目录下,编写HTML模板文件: user_list.html: ``` {% extends "base.html" %} {% block content %} <h1>Users</h1> <table> <tr> <th>Name</th> <th>Email</th> <th>Age</th> <th>Actions</th> </tr> {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.email }}</td> <td>{{ user.age }}</td> <td> <a href="{% url 'user_detail' pk=user.pk %}">View</a> <a href="{% url 'user_edit' pk=user.pk %}">Edit</a> <a href="{% url 'user_delete' pk=user.pk %}">Delete</a> </td> </tr> {% endfor %} </table> <a href="{% url 'user_new' %}">Add User</a> {% endblock %} ``` user_detail.html: ``` {% extends "base.html" %} {% block content %} <h1>{{ user.name }}</h1> <p>Email: {{ user.email }}</p> <p>Age: {{ user.age }}</p> <a href="{% url 'user_edit' pk=user.pk %}">Edit</a> <a href="{% url 'user_delete' pk=user.pk %}">Delete</a> {% endblock %} ``` user_edit.html: ``` {% extends "base.html" %} {% block content %} <h1>{{ title }}</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Save</button> </form> {% endblock %} ``` base.html: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> </head> <body> <div> <h1><a href="{% url 'user_list' %}">My Project</a></h1> </div> <div> {% block content %}{% endblock %} </div> </body> </html> ``` 9. 在Django应用的forms.py中,定义表单类: ``` from django import forms from .models import User class UserForm(forms.ModelForm): class Meta: model = User fields = ('name', 'email', 'age',) ``` 10. 运行Django开发服务器,查看效果: ``` python manage.py runserver ``` 以上就是一个基于Python+Django+MySQL实现的Web数据库系统的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值