6

私は何人かの人々にリンクを送りたいと思います:

http://www.example.com/form/?q=example@me.com

リンクをクリックすると、複数のフィールドを持つフォームである /form/ ページに移動します。

その「メール」入力に入力するq文字列を事前に入力したいと思います

文字列「example@me.com」に指定された電子メールを含むフィールド。

Web サイトは Django で作成されていますが、これを達成するための最善の方法は何かを尋ねたいと思います。

JS、Jquery、Django を使用する必要がありますか? どこから始めればよいかわかりません。

このようなものが欲しい:

http://support.unbounce.com/entries/307658-Can-I-pre-populate-a-form-with-URL-parameters-VIDEO-

しかし、私のサイトでは。誰かが簡単なフォームと例を手伝ってくれますか?

ありがとう

models.py

from django.db import models

class Example(models.Model):
    username = models.CharField(max_length=200, blank=True)
    email = models.CharField(max_length=200)
    image = models.ImageField(upload_to='profiles', blank=True)
    text = models.CharField(max_length=200, blank=True)

フォーム.py

from django import forms

from models import Example

class ExampleForm(forms.ModelForm):
    class Meta:
        model = Example

ビュー.py

from django import forms
from models import Example
from forms import ExampleForm

from django.template import RequestContext, Context
from django.core.context_processors import csrf

from django.shortcuts import render_to_response
from django.shortcuts import render_to_response, get_object_or_404

from django import http

import os
import json
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.conf import settings

def index(request):
    if request.method == "POST":
        form = ExampleForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return http.HttpResponseRedirect('/success/')
    else:
        form = ExampleForm()

    return render_to_response('index.html', {'title': 'Example Form', 'form': form},context_instance=RequestContext(request))

urls.py

from django.conf.urls import patterns, include, url
from django.conf import settings

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', 'signup.views.index', name='index'),
    url(r'^admin/', include(admin.site.urls)),
)

索引テンプレート

<form id='add_cat' method='post' enctype="multipart/form-data">{% csrf_token %}


    <input id="id_username" maxlength="200" name="username" type="text" placeholder="username"> 
    <input id="id_email" maxlength="200" name="email" type="text" >   

    <input id="id_picture" maxlength="200" name="picture" type="text">

    <textarea id="id_text" row="3" name="first_text" placeholder="Type something…"></textarea>

    <input id="add_cat_btn" type='submit' value="save">

 </form>                
4

3 に答える 3

4

request.GET.copy()辞書を提供し、それを辞書として渡しますinitial

initial = request.GET.copy()
form = MyForm(initial=initial)

フォームに存在するフィールドに入力します。

もしあなたが持っているならGETPOST交換可能に、

def index(request):

    initial = {}
    if request.GET:
        initial = request.GET.copy()

    form = ExampleForm(initial=initial)

    if request.method == "POST":
        if request.POST:
            initial = request.POST.copy()
        form = ExampleForm(request.POST, request.FILES, initial=initial)
        if form.is_valid():
            form.save()
            return http.HttpResponseRedirect('/success/')


    return render_to_response('index.html', {'title': 'Example Form', 'form': form },context_instance=RequestContext(request))
于 2013-05-28T16:26:41.810 に答える
3

Django または JavaScript で実行できます。

getParameterByNameそのSOの質問から使用するJavaScriptソリューションを次に示します。

JS でこれを行う利点は、サーバーの応答をキャッシュできるため、ユーザーの要求ごとにサーバーの計算を行う必要がないことです。

たとえばemailfield、メールフォームフィールドに ID を指定すると、次のようなことができます

var emailField = document.getElementById("emailfield");
emailField.value = getParameterByName("email"); // "q" in your example url

ready または onload ハンドラー内 (または、body セクションの最後に配置された script タグ内)

ここにフィドルがあります

コードをiframeに配置するため、GETパラメーターにアクセスできないため、機能しません。iframeを確認すると、機能することがわかります。

ここに例がありますhttp://fiddle.jshell.net/FA9fQ/show/light/?email=hello

于 2013-05-28T16:26:54.750 に答える