用django写了一个《摄影作品》在线评比投票系统

本文讲述了作者如何使用Django2.1.5和MySQL5.7搭建了一个《摄影作品》投票系统,包括数据库设计、视图编写、模板制作及系统特点,如随机图片排序和防止重复投票等。
摘要由CSDN通过智能技术生成

N多年前,曾经用PHP为公司工会写了一个《工会换届选举投票系统》。那时候因为个人爱好,在自学PHP编程。有一天工会主席找我,希望使用网络投票方式选出新一届工会委员。我硬着头皮接下了任务,花了一个星期才完成。

3年前,EE委员会的老潘找我,希望我能帮忙做一个《三八节摄影作品》评比投票系统。因为工作忙的原因,就找到百度免费的《问卷调研》这个在线工具,总算是应付过去。

昨天,老潘又提起《摄影作品》在线投票评比的事,还是希望我能帮忙,本想这一次还是用百度的《问卷调研》这个工具,可是已经不能免费使用了,了解到至少要支付RMB 1000元,因为经费紧张,所以另想办法。

今天,放假,因为疫情,只能待在家里,于是决定自己写一个《摄影作品》投票系统给老潘。花了一个白天,构思、设计后台数据库,编写代码,测试。总算ok。

系统使用了django2.1.5,  mysql5.7,

一、models.py

from django.db import models

# Create your models here.

class qtype(models.Model):
    name=models.CharField(max_length=20)

    def __str__(self):
        return self.name

class question(models.Model):
    qtext=models.CharField(max_length=200)
    qtype=models.ForeignKey('qtype',to_field='id',on_delete=False)
    largevote=models.IntegerField(default=5,verbose_name='最多可选')

    def __str__(self):
        return self.qtext

class choiceitem(models.Model):
    ctext=models.CharField(max_length=40)
    question=models.ForeignKey('question',to_field='id',on_delete=False)
    image=models.ImageField(upload_to='vote',verbose_name='相片')

    def __str__(self):
        return self.ctext

class voterecord(models.Model):
    email=models.EmailField(max_length=50)
    choiceitem=models.ForeignKey('choiceitem',to_field='id', on_delete=False)

 

二、views.py

from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from vote.models import question,qtype,choiceitem,voterecord
from django.views.decorators.csrf import csrf_exempt
from random impor
好的,下面是一个简单的使用 Django 实现的问答系统。 首先,需要创建一个 Django 项目和一个应用程序。可以使用以下命令来创建: ``` django-admin startproject qasystem cd qasystem python manage.py startapp qa ``` 接下来,需要在 `settings.py` 中添加应用程序: ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'qa', ] ``` 然后,需要定义一个模型来存储问题和答案。可以在 `models.py` 中添加以下代码: ```python from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) answer_text = models.TextField() ``` 接下来,需要创建数据库表。可以使用以下命令: ``` python manage.py makemigrations python manage.py migrate ``` 然后,需要定义一个视图来处理用户的请求。可以在 `views.py` 中添加以下代码: ```python from django.shortcuts import render from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt from .models import Question from .utils import preprocess @csrf_exempt def answer(request): if request.method == 'POST': question = request.POST.get('question') if question: question = preprocess(question) best_match = Question.objects.filter(question_text__icontains=question).first() if best_match: return JsonResponse({'answer': best_match.answer_text}) return JsonResponse({'error': 'Invalid request'}) ``` 在上面的代码中,我们首先从请求中获取用户提出的问题,然后进行预处理并在数据库中查找最佳匹配。如果找到了最佳匹配,就返回对应的答案。否则,返回错误消息。 最后,需要定义一个URL来映射到上面的视图。可以在 `urls.py` 中添加以下代码: ```python from django.urls import path from . import views urlpatterns = [ path('answer/', views.answer, name='answer'), ] ``` 现在,可以启动 Django 服务器并测试问答系统了。可以使用以下命令启动服务器: ``` python manage.py runserver ``` 然后,在浏览器中访问 `http://localhost:8000/answer/?question=your_question`,将 `your_question` 替换为你要提出的问题,即可得到对应的答案。 以上就是一个简单的使用 Django 实现的问答系统。当然,实际应用中可能需要更复杂的算法和处理步骤,需要根据具体需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值