django项目多个用户使用相同的项目

时间:2018-01-29 07:52:55

标签: python django

我是django和网络编程的新手。现在,我已经为配置表单生成创建了一个django项目。它允许用户输入值并在用户获取URL后生成配置表单。

Project name: portal, App name: home, input_data.txt: a text file stored the values for the corresponding parameter and it will be read for further processing

它适用于我自己,但多个用户同时使用它。它不起作用。为了让多个用户同时使用它,我该怎么办?

forms.py

from django import forms
from .models import FormGen
from .models import BB_Data

class FinalForm(forms.ModelForm):
    class Meta:
        model=FormGen
        field=['full_name','backbone_number']
class BBForm(forms.ModelForm):
    class Meta:
        model=BB_Data
        fields=['backbone_name','IP','numbers']
        widget={'numbers':forms.TextInput(attrs={'readonly':'readonly'})}

views.py

from django.shortcuts import render,HttpResponse,redirect
from .forms import FinalForm,BBForm
from django.core.files import File
import re

def replacePara(template,para):
    for key,val in para.items():
        template=template.replace(key,val)
    return template

def create(request):
    title="Router Generator"
    form=FinalForm(request.POST or None)
    context={
        "template_title":title,
        "form":form,
    }
    if(form.is_valid()):
    form_data={
        "HNAME":form.cleaned_data.get("Hostname"),
        "ROLE":form.cleaned_data.get("Router_Role"),
    }
    form.save()
    f=open('./input_para.txt','r')
    a=f.read();
    f.close();
    tt=replacePara(a,form_data)
    b=open('./input_data.txt','w')
    b.write(tt)
    b.close()
    return redirect('/backbone')

return render(request,"home/form.html",context)

def bb(request):
    title="Backbone Information"
    if request.method=="POST":
        form=BBForm(request.POST)
        if form.is_valid():
            bb_form={
                'BBNAME':form.cleaned_data.get('backbone_name'),
                'BBIP':form.cleaned_data.get('IP'),
            }
        a=int(form.cleaned_data.get('numbers')
        datainput=''
        if a==1:
            f=open('./bb_set.txt','w')
            f.write(bb_form)
            f.close()
        else: 
            f=open('./bb_set.txt','a')
            outBB.write(bb_form)
            outBB.close()
        form.save()
        f=open('./input_data.txt','r')
        t=f.read()
        tt=int(t.split()[7])  #it get the max number of backbones
        if(at<tt):
            at=at+1;
            bb=BBForm(initial={'numbers':str(at)})
            context={
                "template_title":title,
                "form":bb
            }
            return render(request,"home/bb.html",context)
        else:
            # generate the configurate text file #
            content=final # content store the configurations
            filename="ConfigForm.txt"
            response=HttpResponse(content,content_type='text/plain')
            response['Content-Disposition']='attachment; filename={0}'.format(filename)
            return response
    else:
        return HttpResponse("something wrong")
else:
    form=BBForm(initial={'numbers':"1"})
    f=open('./input_data.txt','r')
    t=f.read()
    tt=int(t.split()[7])
    context={
        'template_title':title,
        'form':form,
        'max':tt
    }
    return render(request,"home/bb.html",context)

input_para:它是存储参数名称的文本文件 input_data:存储对应参数值的文本文件 bb_set:它是存储所有骨干信息的文本文件

1 个答案:

答案 0 :(得分:1)

您将数据保存到单个文件,而不考虑用户。如果我访问您的网站,我将会像其他人一样访问相同的input_data.txtinput_para.txtbb_set.txt文件。

这是持久保存网站/服务的用户数据的方式。您应该使用数据库。

幸运的是,你正在使用Django,它具有惊人的数据库集成,而且它实际上非常简单。对您而言,最难的部分是设计数据库。您需要一个User模型,根据该模型,您可以根据我的情况记录input_datainput_parabb_set数据。

我建议你按照Django教程,特别是this部分,也许还要阅读数据库设计,(包括数据的规范化,这比听起来更有趣)。