python+Django+pycharm+mysql 搭建首个web项目详解

下面是详细的“python+Django+pycharm+mysql 搭建首个web项目详解”攻略,包括两个示例说明。

1. 安装和配置环境

安装python

首先,需要安装Python。可以从Python官网下载安装包,选择对应操作系统版本的安装包进行下载安装。

安装Django

安装完成Python之后,通过pip安装Django。可以在命令提示符窗口(Windows)或终端(Mac/Linux)中,输入以下命令进行安装:

pip install django

安装pycharm

可以从pycharm官网下载对应操作系统版本的安装包进行下载安装。

安装mysql

可以从mysql官网下载对应操作系统版本的安装包进行下载安装。

配置环境

安装完成后,需要将Python、Django和mysql配置到系统环境变量中。这样在终端或命令提示符窗口中就可以直接使用python、django和mysql等命令了。

2. 创建Django项目

在pycharm中创建Django项目,可以按照以下步骤进行:

  1. 打开pycharm,点击“Create New Project”按钮;
  2. 在弹出的窗口中,选择Django项目;
  3. 为项目设置名称、目录和Python解释器;
  4. 点击“Create”按钮,在项目中创建一个虚拟环境;

3. 连接mysql数据库

在Django项目中连接mysql数据库,需要使用Python的mysqlclient模块,可以通过pip安装该模块。

在settings.py文件中,进行数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

4. 创建Django应用

在Django项目中创建应用程序,可以按照以下步骤进行:

  1. 在pycharm中右键单击Django项目,选择“New”,然后选择“app”;
  2. 为应用程序设置名称,然后点击“OK”按钮;
  3. 在应用程序文件夹中,创建urls.py文件,用于定义URL路由。
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

5. 定义视图函数

在创建的Django应用程序中,需要定义视图函数,用于处理请求并返回响应。可以按照以下步骤进行:

在views.py文件中,定义一个函数:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world!")

6. 运行项目

在pycharm中,点击运行按钮,启动Django项目。在浏览器中输入http://localhost:8000/,就可以看到 “Hello, world!” 的响应了。

示例1: 创建博客应用程序

在Django项目中创建一个简单的博客应用程序。可以按照以下步骤进行:

  1. 创建应用程序

在pycharm中右键单击Django项目,选择“New”,然后选择“app”。

  1. 创建Posts模型

在创建的应用程序中,创建models.py文件。在models.py文件中定义一个名为Posts的模型。

from django.db import models

class Posts(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
  1. 创建Posts视图函数

在应用程序的views.py文件中,定义两个函数:

from django.shortcuts import render
from .models import Posts

def posts_list(request):
    posts = Posts.objects.all()
    return render(request, 'posts_list.html', {'posts': posts})

def posts_detail(request, pk):
    post = Posts.objects.get(pk=pk)
    return render(request, 'posts_detail.html', {'post': post})
  1. 创建Posts URL路由

在应用程序的urls.py文件中,定义两个URL路由:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.posts_list, name='posts_list'),
    path('post/<int:pk>/', views.posts_detail, name='posts_detail'),
]
  1. 创建Posts模板

在应用程序的templates文件夹中,创建两个HTML文件,用于显示文章列表和文章详细信息。

posts_list.html:

{% for post in posts %}
    <h2>{{post.title}}</h2>
    <p>{{post.body}}</p>
{% endfor %}

posts_detail.html:

<h2>{{post.title}}</h2>
<p>{{post.body}}</p>
  1. 使用Django默认的admin管理界面添加博客文章

可以使用Django内置的admin应用程序来管理Posts模型,添加博客文章。在应用程序的admin.py文件中,注册Posts模型:

from django.contrib import admin
from .models import Posts

admin.site.register(Posts)

示例2:实现用户注册和登录功能

在Django项目中实现用户注册和登录功能,可以按照以下步骤进行。

  1. 创建用户模型

在Django项目中,可以使用内置的User模型来管理用户。需要在models.py文件中导入User模型:

from django.contrib.auth.models import User
  1. 创建用户注册表单

在应用程序中创建一个注册表单,用于用户输入注册信息。

from django import forms
from django.contrib.auth.models import User

class UserRegisterForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ['username', 'email', 'password']

    def clean_email(self):
        email = self.cleaned_data.get('email')
        if User.objects.filter(email=email).count():
            raise forms.ValidationError("Email已经被使用。")
        return email
  1. 创建用户登录表单

在应用程序中创建一个登录表单,用于用户输入用户名和密码。

from django import forms
from django.contrib.auth import authenticate

class UserLoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

    def clean(self):
        username = self.cleaned_data.get('username')
        password = self.cleaned_data.get('password')
        user = authenticate(username=username, password=password)
        if not user or not user.is_active:
            raise forms.ValidationError("用户名或密码错误。")
        self.cleaned_data['user'] = user
        return self.cleaned_data
  1. 创建用户注册视图函数和URL路由

在views.py文件中定义注册视图函数和URL路由。

from django.shortcuts import render
from .forms import UserRegisterForm
from django.contrib.auth import login

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('index')
    else:
        form = UserRegisterForm()
    return render(request, 'register.html', {'form': form})

urls.py中的路由:

from django.urls import path
from . import views

urlpatterns = [
    # 注册
    path('register/', views.register, name='register'),
]
  1. 创建用户登录视图函数和URL路由

在views.py文件中定义登录视图函数和URL路由。

from django.shortcuts import render
from .forms import UserLoginForm
from django.contrib.auth import authenticate, login

def login(request):
    if request.method == 'POST':
        form = UserLoginForm(request.POST)
        if form.is_valid():
            user = form.cleaned_data['user']
            login(request, user)
            return redirect('index')
    else:
        form = UserLoginForm()
    return render(request, 'login.html', {'form': form})

urls.py中的路由:

from django.urls import path
from . import views

urlpatterns = [
    # 登录
    path('login/', views.login, name='login'),
]
  1. 创建注册和登录模板

在templates文件夹中,创建一个register.html模板和一个login.html模板。

register.html:

<form method="post">
    {% csrf_token %}
    {{ form.username }}
    {{ form.email }}
    {{ form.password }}
    <button type="submit">注册</button>
</form>

login.html:

<form method="post">
    {% csrf_token %}
    {{ form.username }}
    {{ form.password }}
    <button type="submit">登录</button>
</form>

到这里,你就已经完整的了解了“python+Django+pycharm+mysql 搭建首个web项目详解”的攻略,同时,你也已经掌握了两个示例的详细步骤说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+Django+pycharm+mysql 搭建首个web项目详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • python django 基本测试 及调试

    #########20181110from django.db import modelsfrom blog.models import Article, Author, TagAuthor.objects.using(‘db1’).all()     setting.py TEMPLATE_DIRS = ( os.path.join(BASE_DIR, ‘…

    Django 2023年4月13日
    00
  • 解决django报错:ValueError(“The view Hello.views.login didn’t return an HttpResponse object. It returned None instead.”)

    产生原因:定义的视图函数login,没有返回HttpResponse对象。它返回None。所有导致访问报错 解决:我在访问页面的时候把请求方式搞错了,本来是先获取页面,然后再提交数据。我这里变成直接提交数据了。 改成get,先获取界面在post提交数据: 附带一个启动django服务的脚本: import os def run_server(work_dir…

    Django 2023年4月12日
    00
  • Django form表单

    我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。 Django form组件就实现了上面所述的功能。 总结一下,其实f…

    Django 2023年4月11日
    00
  • [Django]用户权限学习系列之Permission权限基本操作指令

    若需建立py文件进行测试,则在文件开始加入以下代码即可 #coding:utf-8 import os os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “www.settings”) ”’ Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则…

    Django 2023年4月10日
    00
  • Django之cookie/session

      当我们通过浏览器来访问网站的时候,由于HTTP本身是无状态的,所以当我们结束访问后第二次再来访问的时候,服务器本身是不认识我们(它不知道我们之前来过,也就不会保存我们之前的信息),比如当我们第一次登入的网站后第二次再来的时候我们还是需要重新登入,这样网站不能保存我们的密码,是不是很麻烦,那如何解决这个问题呢?那cookie和session就是为了解决这个…

    2023年4月9日
    00
  • django drf框架自带的路由及最简化的视图

    针对该话题,我介绍一下关于Django DRF框架自带的路由和最简化的视图的完整攻略。 一、Django DRF框架自带的路由 在Django DRF框架中,提供了多种路由匹配方法,其中最常用的是DRF自带的路由匹配器。 首先,需要导入include和default-router两个路由相关的模块: from django.urls import path,…

    Django 2023年5月16日
    00
  • Django使用原生SQL查询数据库详解

    关于使用Django进行原生SQL查询,我们需要先了解一下Django提供给我们的两种方式: 使用自定义的SQL作为Django查询的一部分,基本与SQLalchemy等ORM框架使用方式相同。此方式执行的是基于Django所定义的模型中的数据查询,且在Django的查询集上已经默认处理了ORM的一些坑点使其可读性更清晰; 使用Django提供的 djang…

    Django 2023年5月16日
    00
  • Django切换数据库和迁移数据详解

    Django是一个非常流行的Python Web框架,支持多种数据库,包括MySQL、SQLite和PostgreSQL等。在使用Django开发Web应用时,会涉及到数据库相关操作,比如迁移数据库、切换数据库等等。下面我将详细讲解“Django切换数据库和迁移数据”的完整攻略,包括两条示例说明。 一、切换数据库 1.1 切换到SQLite数据库 当使用Dj…

    Django 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部