Initializing a django project

Initializing a project

  1. install conda env for this project conda create --name mydjangoenv python=3.8

  2. Activate conda env and Install Django pip install django

  3. using django-admin startproject withme . to create the project in the current directory

  4. Run server by using python manage.py runserver

  5. Create a pages directory using python manage.py startapp pages (in conda env)
    add app config definition in withme/setting.py

  6. Create a new directory named template, which has two directories and base.html, pages(other pages) and partials(the partials of base.html)
    In withme/setting.py, set the path of template: 'DIRS': [os.path.join(BASE_DIR, 'template')]

  7. Create a new directory named static in withme folder, which includes Static files (CSS, JavaScript, Images)
    In withme/setting.py, set the path of static,

    复制代码
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = 'static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'withme/static')
    ]
  8. run python manage.py collectstatic to create a static directory outside of withme folder, and add this folder to .gitignore

  9. In the first time, Add a page using 3 steps:

    1. In pages/views.py, write a view

      复制代码
      from django.http import HttpResponse
      def index(request):
          return HttpResponse("Hello")

      or render a page

      复制代码
      from django.shortcuts import render
      def index(request):
          return render(request, 'pages/index.html')
    2. Create a URLconf in pages/urls.py(need to add this file)

      复制代码
      from django.urls import path
      from . import views
      
      urlpatterns = [
          path('', views.index, name='index')
      ]
    3. Point the root URLconf at the pages.urls module. In withme/urls.py

      复制代码
      from django.contrib import admin
      from django.urls import path, include # add include
      
      urlpatterns = [
          path('', include('pages.urls')), # add a url to urlpatterns
          path('admin/', admin.site.urls),
      ]

Create a new app (posts)

  1. In template, create a folder called posts, which includes 3 files, 'post' 'posts' 'search'

    • Each file using this code to init

      复制代码
      {% extends 'base.html' %}
      
      {% block content %}
      <h1>listings</h1>
      {% endblock %}
  2. python manage.py startapp posts tp create a new app posts

  3. add app config in withme/settings.py

    复制代码
    # Application definition
    INSTALLED_APPS = [
        'pages.apps.PagesConfig',
        'posts.apps.PostsConfig',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
  4. In withme/urls.py, Add a URL to urlpatterns path('posts/', include('posts.urls')),

  5. Create a url.py file in post app, copy the code in pages/urls.py

Database setup

  1. install postgreSQL16 and pgadmin4

  2. open terminal: type in this

    postgres=# \password postgres
    Enter new password for user "postgres":
    Enter it again:
    postgres=# CREATE DATABASE withme OWNER postgres;
    CREATE DATABASE

  3. create a server in pgadmin, and in withme database, set some infos

  4. pip install psycopg2
    pip install psycopg2-binary

  5. change data setting in withme/settings.py

    from

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': BASE_DIR / 'db.sqlite3',
    }
    }

to

复制代码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'withme',
        'USER': 'postgres',
        'PASSWORD': '123456',
        'HOST': 'localhost'
    }
}
  1. pip install Pillow

  2. Design database

  3. pythpm manage.py makemigrations

  4. python manage.py migrate

  5. refresh servers in pgadmin, and check if they create table

Design database

  1. design schemas
  2. write models in (ex.) listings/models.py
  3. If you add foreignKey, you need to import other model

Create superuser

  1. go to localhost:8000/admin/

  2. python manage.py createsuperuser to create a super user called administrator and password is 123456

Register models with admin

  1. register models in listings/admin.py

  2. reload django administration page, you can see there is a listings model

Media folder

  1. add Media folder setting, just like static folder setting we did before

  2. add url to urlpatterns

in localhost/admin, add some realtors and listings, the image that have been uploaded will display inside media folder(auto-create)

Custom the admin page

go to template, create admin/base_site.html, and then custom

if you want to custom the data display, like not just show title(name) instead of other field, goto listings/admin.py

Pull data from listing model

listings/views.py

import models

相关推荐
星星电灯猴7 分钟前
iOS 性能调试全流程:从 Demo 到产品化的小团队实战经验
后端
程序无bug16 分钟前
手写Spring框架
java·后端
JohnYan18 分钟前
模板+数据的文档生成技术方案设计和实现
javascript·后端·架构
悠悠小茉莉28 分钟前
Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)
c++·ide·vscode·python·visualstudio·visual studio
全干engineer29 分钟前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出
Da_秀33 分钟前
软件工程中耦合度
开发语言·后端·架构·软件工程
m0_6256865543 分钟前
day53
python
蓝易云1 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
a_Dragon11 小时前
Spring Boot多环境开发-Profiles
java·spring boot·后端·intellij-idea
用户8324951417321 小时前
Maven 项目打包:实现业务代码与第三方依赖分离
后端