django crud

    科技2026-08-25  18

    django crud

    In this blog, let’s see what is CRUD and how to perform CRUD with Django. Also, visit my previous blogs if you have any problem with connecting Django and Databases. In this blog, I am performing CRUD functionality with PostgreSQL.

    在此博客中,让我们看看什么是CRUD以及如何使用Django执行CRUD。 另外,如果您在连接Django和数据库方面有任何问题,请访问我以前的博客。 在此博客中,我将使用PostgreSQL执行CRUD功能。

    What is CRUD?

    什么是CRUD?

    CRUD is Create, Read, Update, and Delete.

    CRUD是C reate,R EAD,更新,和d elete。

    Creating a Django Project and Database Initialization.

    创建Django项目和数据库初始化。

    $ django-admin startproject curddjango$ cd curddjango/$ python3 manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.August 21, 2020 - 07:14:32Django version 3.1, using settings 'curddjango.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CONTROL-C.

    After creating a project successfully, connect to any database of your wish. Here I am connecting with PostgreSQL. Initially, to connect with PostgreSQL, we should have an adapter. Install it with the command.

    成功创建项目后,连接到您想要的任何数据库。 在这里,我要连接PostgreSQL。 最初,要连接PostgreSQL,我们应该有一个adapter 。 使用命令安装。

    $ pip install postgres

    After successful installation, open curddjango/settings.py. Scroll to the database section to configure our database.

    成功安装后,打开curddjango/settings.py 。 滚动到数据库部分以配置我们的数据库。

    # Database# https://docs.djangoproject.com/en/1.11/ref/settings/#databasesDATABASES = { 'default': 'ENGINE': 'django.db.backends.postgresql' 'NAME': 'django-curd' # Databaes Name 'USER': 'postgres' # User Name 'PASSWORD': 'admin' #Password 'HOST': '127.0.0.1' 'PORT': '5432' }}

    Now create an app and register it in the settings.py file.

    现在创建一个应用程序并将其注册在settings.py文件中。

    $ python3 manage.py startapp curd

    The above command creates an app named curd in our project folder.

    上面的命令在我们的项目文件夹中创建一个名为curd的应用程序。

    After creating, register the app in the settings.py file.

    创建后,将应用程序注册到settings.py文件中。

    # Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'curd', #Add your App name here]

    Now just migrate your project.

    现在,只需迁移您的项目即可。

    $ python3 manage.py migrateOperations to perform:Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying admin.0002_logentry_remove_auto_add... OKApplying admin.0003_logentry_add_action_flag_choices... OKApplying contenttypes.0002_remove_content_type_name... OKApplying auth.0002_alter_permission_name_max_length... OKApplying auth.0003_alter_user_email_max_length... OKApplying auth.0004_alter_user_username_opts... OKApplying auth.0005_alter_user_last_login_null... OKApplying auth.0006_require_contenttypes_0002... OKApplying auth.0007_alter_validators_add_error_messages... OKApplying auth.0008_alter_user_username_max_length... OKApplying auth.0009_alter_user_last_name_max_length... OKApplying auth.0010_alter_group_name_max_length... OKApplying auth.0011_update_proxy_permissions... OKApplying auth.0012_alter_user_first_name_max_length... OKApplying sessions.0001_initial... OK

    2. Creating a model and migration:

    2.创建模型并进行迁移:

    Now create a new table named curd in the database. Open curd/models.py file to create our first model.

    现在,在数据库中创建一个名为curd的新表。 打开curd/models.py文件创建我们的第一个模型。

    from django.db import models# Create your models here.class Emp(models.Model): emp_name = models.TextField() emp_email = models.EmailField() emp_mobile = models.TextField()

    Now migrate your app.

    现在迁移您的应用程序。

    $ python3 manage.py makemigrationsMigrations for 'curd':curd/migrations/0001_initial.py- Create model Emp$ python3 manage.py migrateOperations to perform:Apply all migrations: admin, auth, contenttypes, curd, sessionsRunning migrations:Applying curd.0001_initial... OK

    3. Create Template and View

    3. C reate模板和视图

    Create a folder templates in the main directory where we’ll be creating our views.

    在将要创建视图的主目录中创建一个文件夹templates 。

    Now open curd/settings.py file and scroll down to the Templates section and os.path.join(BASE_DIR,’templates’) in the DIRS. This will tell Django where our templates( UI) reside.

    现在打开curd/settings.py文件,向下滚动到模板部分和os.path.join(BASE_DIR,'templates')在DIRS 。 这将告诉Django我们的模板(UI)在哪里。

    TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ os.path.join(BASE_DIR,'templates') #Add this line ], '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', ], }, },]

    Now let's start creating our views.

    现在开始创建视图。

    Create a file named create.html in the templates folder.

    在templates文件夹中创建一个名为create.html的文件。

    <html><head><title>Create View</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"></head><body><div class="container" style="margin-top: 200px"><h2>Add Employee</h2>{% if messages %}<ul class="messages"> {% for message in messages %} <div class="alert alert-primary" role="alert"> {{ message }} </div> {% endfor %}</ul>{% endif %}<form method="POST"> <div class="form-group"> <label for="exampleInputEmail1">Employee Email</label> <input type="email" class="form-control" id="emp_email" name="emp_email" placeholder="Enter email"> </div> <div class="form-group"> <label for="exampleInputPassword1">Employee Name</label> <input type="text" class="form-control" id="emp_name" name="emp_name" placeholder="Employee Name"> </div> <div class="form-group"> <label for="exampleInputPassword1">Contact</label> <input type="text" class="form-control" id="emp_mobile"name="emp_mobile" placeholder="Contact"> </div> <button type="submit" class="btn btn-primary">Add Employee</button> </form></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384 JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script></body></html>

    Now in the curd/view.py file, I am creating a function createView that renders the create.html page. I order to map or connect the view and the controller, I am creating a route or URL on the curd/urls.py page.

    现在在curd/view.py文件中,我正在创建一个函数createView ,该函数呈现create.html页面。 我要映射或连接视图和控制器,我在curd/urls.py页面上创建路线或URL。

    curd/views.py

    curd/views.py

    from django.shortcuts import render, redirectfrom .models import Empfrom django.contrib import messages# Create your views here.def createView(request): return render(request,'create.html')

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createViewurlpatterns = [ path('create',createView),]

    Now on navigating to the URL http://localhost:8000/create, you should see a page like this.

    现在,导航到URL http:// localhost:8000 / create ,您应该会看到类似的页面。

    Add Employee Page 添加员工页面

    Now I am creating another function named store to handle the POST value from the form.

    现在,我正在创建另一个名为store函数来处理表单中的POST值。

    curd/view.py

    curd/view.py

    from django.shortcuts import render, redirectfrom .models import Empfrom django.contrib import messages# Create your views here.def createView(request): return render(request,'create.html')def store(request): emp = Emp() emp.emp_name = request.POST.get('emp_name') emp.emp_email = request.POST.get('emp_email') emp.emp_mobile = request.POST.get('emp_mobile') emp.save() messages.success(request, "Employee Added Successfully") return redirect('/create')

    Again now create a route to handle our POST request.

    现在再次创建一条路由来处理我们的POST请求。

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, storeurlpatterns = [ path('create',createView), path('store',store,name='store'),]

    Now add an action in our form to make a POST request.

    现在,在我们的表单中添加一个操作以发出POST请求。

    templates/create.html

    templates/create.html

    <form action={% url "store" %} method="POST"> #add actions in this line <div class="form-group"> <label for="exampleInputEmail1">Employee Email</label> <input type="email" class="form-control" id="emp_email" name="emp_email" placeholder="Enter email"> </div> <div class="form-group"> <label for="exampleInputPassword1">Employee Name</label> <input type="text" class="form-control" id="emp_name" name="emp_name" placeholder="Employee Name"> </div> <div class="form-group"> <label for="exampleInputPassword1">Contact</label> <input type="text" class="form-control" id="emp_mobile"name="emp_mobile" placeholder="Contact"> </div> <button type="submit" class="btn btn-primary">Add Employee</button> </form>

    If everything is fine, you should see the details entered in the form getting saved in the database.

    如果一切正常,您应该看到在表单中输入的详细信息已保存在数据库中。

    4. Read Template and View

    4. R ead模板和视图

    Now create a new file index.html in the templates folder.

    现在,在模板文件夹中创建一个新文件index.html 。

    <html><head><title> View Employee </title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"></head><body><div class="container" style="margin-top: 200px"> <h1> View Employee </h1> {% if messages %} <ul class="messages"> {% for message in messages %} <div class="alert alert-primary" role="alert"> {{ message }} </div> {% endfor %} </ul> {% endif %}<table border="1" class="table"> <thead> <tr> <th>Name</th> <th>Email</th> <th>Mobile</th> </tr> </thead> <tbody> {% for emp_list in emp %} <tr> <td>{{ emp_list.emp_name }}</td> <td>{{ emp_list.emp_email }}</td> <td>{{ emp_list.emp_mobile }}</td> </tr> {% endfor %} </tbody> </table></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script></body></html>

    Now in the curd/view.py I am creating a function index that renders the index.html page with all the employee data as an object. In order to map or connect the view with the controller, I am creating a route or URL in the curd/urls.py page.

    现在,在curd/view.py我正在创建一个函数index ,该函数index将以所有员工数据为对象的index.html页面。 为了映射视图或将其与控制器连接,我在curd/urls.py页面中创建了一个路由或URL。

    crud/view.py

    crud/view.py

    def index(request): emp = Emp.objects.all() return render(request, 'index.html',{'emp':emp})

    crud/urls.py

    crud/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, store, indexurlpatterns = [ path('create',createView), path('store',store,name='store'), path('',index),]

    On visiting the http://localhost:8000/ URL, you should see something like this.

    在访问http:// localhost:8000 / URL时,您应该看到类似以下的内容。

    View Template 查看模板

    To view each and every Employee Details, create another template named view.html in the templates folder.

    要查看每个员工详细信息,请在模板文件夹中创建另一个名为view.html的模板。

    view.html

    view.html

    <html><head><title>View</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"></head><body><div class="container" style="margin-top: 200px"> <table class="table"> <tbody> <tr> <td>Employee Id</td> <td>{{ emp.id }}</td> </tr> <tr> <td>Employee Name</td> <td>{{ emp.emp_name }}</td> </tr> <tr> <td>Employee Email</td> <td>{{ emp.emp_email }}</td> </tr> <tr> <td>Contact</td> <td>{{ emp.emp_mobile }}</td> </tr> </tbody> </table></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script></body></html>

    Now I am creating a function named viewEmp which finds the user with his/her id and returns his/her details to the view page as an object. After creating, I am mapping the view to an URL.

    现在,我正在创建一个名为viewEmp的函数,该函数查找具有其ID的用户并将其详细信息作为对象返回到视图页面。 创建后,我将视图映射到URL。

    curd/viewEmp.py

    curd/viewEmp.py

    def viewEmp(request,pk): emp = Emp.objects.get(id = pk) return render(request, 'view.html',{'emp':emp})

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, store, index, viewEmpurlpatterns = [ path('create',createView), path('store',store,name='store'), path('',index), path('view/<int:pk>',viewEmp,name='viewEmp'),]

    Now call the view URL in the table row.

    现在,在表格行中调用视图URL。

    templates/index.html

    templates/index.html

    <table border="1" class="table"><thead> <tr> <th>Name</th> <th>Email</th> <th>Mobile</th> <th>View</th> </tr></thead><tbody>{% for emp_list in emp %} <tr> <td>{{ emp_list.emp_name }}</td> <td>{{ emp_list.emp_email }}</td> <td>{{ emp_list.emp_mobile }}</td> <td><a href="{% url 'viewEmp' emp_list.id %}">View</a></td> </tr>{% endfor %}</tbody></table>

    Now everything must be fine, and you should be able to view the Employee details as shown.

    现在一切都很好,您应该能够查看如图所示的Employee详细信息。

    View Employee 查看员工

    5. Delete View

    5. D elete查看

    To delete an object from the table, I am creating a view named deleteEmp in the curd/views.py file and mapping it to an URL.

    要从表中删除对象,我正在deleteEmp curd/views.py文件中创建一个名为deleteEmp的视图,并将其映射到URL。

    curd/view.py

    curd/view.py

    def deleteEmp(request, pk): emp = Emp.objects.get(id = pk) emp.delete() messages.success(request, "Employee Deleted Successfully") return redirect('/')

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, store, index, deleteEmp, viewEmpurlpatterns = [ path('create',createView), path('store',store,name='store'), path('',index), path('view/<int:pk>',viewEmp,name='viewEmp'), path('delete/<int:pk>',deleteEmp,name='deleteEmp'),]

    Now call the delete URL in the index.html template.

    现在,在index.html模板中调用删除URL。

    <table border="1" class="table"><thead> <tr> <th>Name</th> <th>Email</th> <th>Mobile</th> <th>Delete</th> <th>View</th> </tr></thead><tbody>{% for emp_list in emp %} <tr> <td>{{ emp_list.emp_name }}</td> <td>{{ emp_list.emp_email }}</td> <td>{{ emp_list.emp_mobile }}</td> <td><a href="{% url 'deleteEmp' emp_list.id %}">Delete</td> <td><a href="{% url 'viewEmp' emp_list.id %}">View</a></td> </tr>{% endfor %}</tbody></table>

    6. Update Template and view

    6. U pdate模板和图

    To update an Employee in the table, I am creating another view for editing the user’s details.

    要更新表中的Employee,我正在创建另一个视图来编辑用户的详细信息。

    curd/update.html

    curd/update.html

    <html><head><title>Update View</title><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"></head><body><div class="container" style="margin-top: 200px"> <h2>Add Employee</h2> {% if messages %} <ul class="messages"> {% for message in messages %} <div class="alert alert-primary" role="alert"> {{ message }} </div> {% endfor %} </ul> {% endif %} <form method="POST"> {% csrf_token %} <div class="form-group"> <label for="exampleInputEmail1">Employee Email</label> <input type="email" class="form-control" id="emp_email" name="emp_email" placeholder="Enter email" value={{emp.emp_email}}> </div> <div class="form-group"> <label for="exampleInputPassword1">Employee Name</label> <input type="text" class="form-control" id="emp_name" name="emp_name" placeholder="Employee Name" value={{emp.emp_name}}> </div> <div class="form-group"> <label for="exampleInputPassword1">Contact</label> <input type="text" class="form-control" id="emp_mobile" name="emp_mobile" placeholder="Contact" value={{emp.emp_mobile}}> </div> <button type="submit" class="btn btn-primary">Update Employee</button> </form></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script></body></html>

    I am creating a view to render this template and creating a route to map the view and template.

    我正在创建一个视图以渲染此模板,并创建了一条路线来映射该视图和模板。

    curd/updateView.py

    curd/updateView.py

    def updateView(request,pk): emp = Emp.objects.get(id = pk) return render(request,'update.html',{'emp':emp})

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, store, index, deleteEmp, updateView, viewEmpurlpatterns = [ path('create',createView), path('store',store,name='store'), path('',index), path('view/<int:pk>',viewEmp,name='viewEmp'), path('delete/<int:pk>',deleteEmp,name='deleteEmp'), path('update/<int:pk>',updateView, name='updateEmp'),]

    Again just call the Update URL in the index.html file as shown.

    如图所示,再次调用index.html文件中的Update URL。

    templates/index.html

    templates/index.html

    <table border="1" class="table"><thead> <tr> <th>Name</th> <th>Email</th> <th>Mobile</th> <th>Delete</th> <th>Update</th> <th>View</th> </tr></thead><tbody>{% for emp_list in emp %} <tr> <td>{{ emp_list.emp_name }}</td> <td>{{ emp_list.emp_email }}</td> <td>{{ emp_list.emp_mobile }}</td> <td><a href="{% url 'deleteEmp' emp_list.id %}">Delete</td> <td><a href="{% url 'updateEmp' emp_list.id %}">edit</a></td> <td><a href="{% url 'viewEmp' emp_list.id %}">View</a></td> </tr>{% endfor %}</tbody></table> Updated Index.html UI 更新了Index.html UI

    If everything is good, you should see the updated UI with Employee details on the text box.

    如果一切正常,您应该在文本框上看到带有Employee详细信息的更新的UI。

    update.html UI update.html用户界面

    Now create an Update function to update the Employee details.

    现在创建一个Update函数来更新Employee的详细信息。

    curd/views.py

    curd/views.py

    def update(request,pk): print('in') emp = Emp.objects.get(id = pk) emp.emp_name = request.POST.get('emp_name') emp.emp_email = request.POST.get('emp_email') emp.emp_mobile = request.POST.get('emp_mobile') emp.save() messages.success(request, "Employee Update Successfully") return redirect('/')

    curd/urls.py

    curd/urls.py

    from django.conf.urls import urlfrom django.urls import pathfrom .views import createView, store, index, deleteEmp, updateView, update, viewEmpurlpatterns = [ path('create',createView), path('store',store,name='store'), path('',index), path('view/<int:pk>',viewEmp,name='viewEmp'), path('delete/<int:pk>',deleteEmp,name='deleteEmp'), path('update/<int:pk>',updateView, name='updateEmp'), path('edit/<int:pk>',update, name='edit'),]

    Now add an action in the form to make a POST request

    现在在表单中添加一个操作以发出POST请求

    <form action={% url 'edit' emp.id %} method="POST"> {% csrf_token %} <div class="form-group"> <label for="exampleInputEmail1">Employee Email</label> <input type="email" class="form-control" id="emp_email" name="emp_email" placeholder="Enter email" value={{emp.emp_email}}> </div> <div class="form-group"> <label for="exampleInputPassword1">Employee Name</label> <input type="text" class="form-control" id="emp_name" name="emp_name" placeholder="Employee Name" value={{emp.emp_name}}> </div> <div class="form-group"> <label for="exampleInputPassword1">Contact</label> <input type="text" class="form-control" id="emp_mobile" name="emp_mobile" placeholder="Contact" value={{emp.emp_mobile}}> </div> <button type="submit" class="btn btn-primary">Update Employee</button> </form>

    Now you are good to go.

    现在你很好。

    Feel free to contact me for any queries regarding this blog.

    如有任何关于此博客的疑问,请随时与我联系。

    Email: sjlouji10@gmail.com

    电子邮件:sjlouji10@gmail.com

    Linkedin: https://www.linkedin.com/in/sjlouji/

    Linkedin: https : //www.linkedin.com/in/sjlouji/

    I am adding Github URL of this blog: https://github.com/sjlouji/-CURD-Django-Medium.git

    我正在添加此博客的Github URL: https : //github.com/sjlouji/-CURD-Django-Medium.git

    Happy coding….

    祝您编程愉快。

    翻译自: https://medium.com/swlh/django-crud-application-postgresql-97c62d42eb38

    django crud

    相关资源:CRUD_TEST-源码
    Processed: 0.009, SQL: 9