简体   繁体   English

Django在输入链接时创建一个对象

[英]Django create an object when enter its link

the title probably doesn't tell my problem, sorry about it. 标题可能不会告诉我的问题,抱歉。

I have a models.py like this: 我有一个这样的models.py

class Baslik(models.Model):
    user = models.ForeignKey(User, null=True, blank=True)
    title = models.CharField(max_length=50)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    active = models.BooleanField(default=True)

I have a function to add object to Baslik model. 我有一个向Baslik模型添加对象的功能。 I just enter a title and it works fine. 我只是输入一个标题,它工作正常。 This is my forms.py : 这是我的forms.py

class BaslikForm(ModelForm):
    class Meta:
        model = Baslik
        fields = ('title',)

My urls for every object is like this: url(r'^(?P<title>.*)/$', 'tek', name = "tek_baslik") I want to create a new object when user enter its future link if it isn't already created. 我对每个对象的网址都是这样的: url(r'^(?P<title>.*)/$', 'tek', name = "tek_baslik")我想在用户输入其未来链接时创建一个新对象如果它尚未创建。 For instance when user enters /baslik/stack I want to create a "stack" object immediately and render its page that defined in views.py for every object. 例如,当用户输入/baslik/stack我想立即创建一个“堆栈”对象,并为每个对象呈现其在views.py中定义的页面。 How can I do this. 我怎样才能做到这一点。 Any idea would help. 任何想法都会有帮助。 Thanks. 谢谢。

Here's an approach you can take: 这是您可以采取的方法:

1) Define a new url structure: 1)定义一个新的url结构:

url(r'^baslik/(?P<title>.*)/$', views.baslik_handle, name = "tek_baslik")

2) You don't need the modelform, you can directly handle it through the views. 2)您不需要modelform,您可以通过视图直接处理它。 Use get_or_create in views.baslik_handle. 使用get_or_create在views.baslik_handle。 eg 例如

def baslik_handle(request, title):
   baslik, created = Baslik.objects.get_or_create(title=title)

The ModelForm is unnecessary, try this: ModelForm是不必要的,试试这个:

view 视图

def create_baslik(request, title):
    context = RequestContext(request)
    context_dict = {}

    baslik, created = Baslik.objects.get_or_create(title=title, user=request.user)
    context_dict['baslik'] = baslik

    return render_to_response('baslik.html', context_dict, context)

template 模板

{% if baslik %}
    {{ baslik.title }}
    ...
{% endif %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM